FineUI 官方论坛

标题: <f:Tree>控件绑定列表项后点击某一项仍会在增加相应列表项 [打印本页]

作者: zhangdaxu    时间: 2017-5-22 10:16
标题: <f:Tree>控件绑定列表项后点击某一项仍会在增加相应列表项
本帖最后由 zhangdaxu 于 2017-5-22 10:26 编辑

Equipment.Master:
  1. <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Equipment.master.cs"
  2.     Inherits="SinoPriceMonitor.SubPage.Equipment.Equipment" %>

  3. <!DOCTYPE html>
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head id="Head1" runat="server">
  6.     <title></title>
  7.     <style>
  8.         .x-grid-row-summary .x-grid-cell-inner
  9.         {
  10.             font-weight: bold;
  11.             color: red;
  12.         }
  13.     </style>
  14.     <asp:ContentPlaceHolder ID="headCPH" runat="server">
  15.     </asp:ContentPlaceHolder>
  16. </head>
  17. <body>
  18.     <form id="form1" runat="server">
  19.     <f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
  20.     <f:Panel ID="Panel1" runat="server" ShowBorder="true" ShowHeader="false" Title="母版页"
  21.         Layout="HBox" BoxConfigAlign="Stretch" BoxConfigPosition="Start" BoxConfigChildMargin="0 5 0 0"
  22.         BodyPadding="5">
  23.         <Items>
  24.             <f:Tree ID="Tree1" Width="200px"  EnableCollapse="true" ShowHeader="true" Title="选择省份" OnNodeCommand="Tree1_NodeCommand" runat="server" >
  25.                         <Listeners>
  26.                 <f:Listener Event="beforeitemcontextmenu" Handler="onTreeNodeContextMenu" />
  27.             </Listeners>
  28.             </f:Tree>
  29.             <f:Menu ID="Menu1" runat="server">
  30.                 <Items>
  31.                     <f:MenuButton ID="btnExpandNode" EnablePostBack="false" runat="server" Text="展开全部">
  32.                         <Listeners>
  33.                             <f:Listener Event="click" Handler="onExpandNode" />
  34.                         </Listeners>
  35.                     </f:MenuButton>
  36.                     <f:MenuButton ID="btnCollapseNode" EnablePostBack="false" runat="server" Text="折叠全部">
  37.                         <Listeners>
  38.                             <f:Listener Event="click" Handler="onCollapseNode" />
  39.                         </Listeners>
  40.                     </f:MenuButton>
  41.                 </Items>
  42.                 <Listeners>
  43.                     <f:Listener Event="show" Handler="onMenuShow" />
  44.                 </Listeners>
  45.             </f:Menu>
  46.             <f:CPHConnector ID="CPHConnector1" runat="server">
  47.                 <asp:ContentPlaceHolder ID="mainCPH" runat="server">
  48.                 </asp:ContentPlaceHolder>
  49.             </f:CPHConnector>
  50.         </Items>
  51.     </f:Panel>
  52.     </form>
  53.     <script src="../../js/jquery-1.11.1.min.js" type="text/javascript"></script>
  54.     <script>

  55.         var treeID = '<%= Tree1.ClientID %>';
  56.         var menuID = '<%= Menu1.ClientID %>';
  57.         // 保存当前菜单对应的树节点ID
  58.         var currentNodeId;

  59.         // 返回false,来阻止浏览器右键菜单
  60.         function onTreeNodeContextMenu(view, record, item, index, event) {
  61.             currentNodeId = record.getId();

  62.             F(menuID).showAt(event.getXY());

  63.             event.stopEvent();
  64.         }

  65.         // 设置所有菜单项的禁用状态
  66.         function setMenuItemsDisabled(disabled) {
  67.             var menu = F(menuID);
  68.             $.each(menu.items.items, function (index, item) {
  69.                 disabled ? item.disable() : item.enable();
  70.             });
  71.         }

  72.         // 显示菜单后,检查是否禁用菜单项
  73.         function onMenuShow() {
  74.             if (currentNodeId) {
  75.                 var tree = F(treeID);
  76.                 var store = tree.getStore();

  77.                 var nodeData = store.getById(currentNodeId);
  78.                 if (nodeData.data.leaf) {
  79.                     setMenuItemsDisabled(true);
  80.                 } else {
  81.                     setMenuItemsDisabled(false);
  82.                 }
  83.             }
  84.         }

  85.         function onExpandNode() {
  86.             if (currentNodeId) {
  87.                 var tree = F(treeID);
  88.                 var store = tree.getStore();

  89.                 tree.expandNode(store.getById(currentNodeId), true);
  90.             }
  91.         }

  92.         function onCollapseNode() {
  93.             if (currentNodeId) {
  94.                 var tree = F(treeID);
  95.                 var store = tree.getStore();

  96.                 tree.collapseNode(store.getById(currentNodeId), true);
  97.             }
  98.         }

  99.     </script>
  100. </body>
  101. </html>
复制代码



Equipment.Master.cs:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. using FineUI;
  8. using System.Data;
  9. using SinoPriceMonitor.DAL;

  10. namespace SinoPriceMonitor.SubPage.Equipment
  11. {
  12.     public partial class Equipment : System.Web.UI.MasterPage
  13.     {
  14.         public delegate void ProcessLeftTreeNodeClickDelegate(string treeNodeId, string treeNodeText);
  15.         public ProcessLeftTreeNodeClickDelegate ProcessLeftTreeNodeClick
  16.         {
  17.             get;
  18.             set;
  19.         }

  20.         protected void Page_Load(object sender, EventArgs e)
  21.         {
  22.             LoadData();
  23.         }

  24.         private void LoadData()
  25.         {
  26.             //// 模拟从数据库返回数据表
  27.             DataTable table = Sys_Equipment.SP_Province_GetList();

  28.             foreach (DataRow row in table.Rows)
  29.             {
  30.                 FineUI.TreeNode node = new FineUI.TreeNode();
  31.                 node.Text = row["Province_Name"].ToString();
  32.                 node.NodeID = row["Province_Code"].ToString();
  33.                 Tree1.Nodes.Add(node);
  34.                 DataTable table2 = Sys_Equipment.A_MainMarket_Company_GetList(Convert.ToInt32(row["Province_Code"].ToString()));
  35.                 foreach (DataRow row2 in table2.Rows)
  36.                 {
  37.                     FineUI.TreeNode node2 = new FineUI.TreeNode();
  38.                     node2.Text = row2["Company"].ToString();
  39.                     node2.EnableClickEvent = true;
  40.                     node.Nodes.Add(node2);
  41.                 }
  42.             }  
  43.         }

  44.         protected void Tree1_NodeCommand(object sender, TreeCommandEventArgs e)
  45.         {
  46.             if (ProcessLeftTreeNodeClick != null)
  47.             {
  48.                 ProcessLeftTreeNodeClick(e.NodeID, e.Node.Text);
  49.             }
  50.         }
  51.     }
  52. }
复制代码





作者: sanshi    时间: 2017-5-22 13:29
  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             LoadData();
  4.         }
复制代码


一般来说,Page_Load 中的代码应该放到 !IsPostBack 中,类似:
  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (!IsPostBack)
  4.             {
  5.                 Calendar1.MinDate = DateTime.Now;
  6.                 Calendar1.MaxDate = DateTime.Now.AddDays(20);
  7.                 Calendar1.SelectedDate = DateTime.Now.AddDays(10);

  8.                 Button1.Text = String.Format("选中{0}", DateTime.Now.AddDays(2).ToString(Calendar1.DateFormatString));
  9.             }
  10.         }
复制代码

作者: zhangdaxu    时间: 2017-5-24 11:01
,真是迷糊了,就是这个原因,感谢大神赐教




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4