FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 4178|回复: 2
打印 上一主题 下一主题

<f:Tree>控件绑定列表项后点击某一项仍会在增加相应列表项

[复制链接]
跳转到指定楼层
楼主
发表于 2017-5-22 10:16:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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. }
复制代码




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
发表于 2017-5-22 13:29:07 | 只看该作者
  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.         }
复制代码
板凳
 楼主| 发表于 2017-5-24 11:01:50 | 只看该作者
,真是迷糊了,就是这个原因,感谢大神赐教
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-23 18:26 , Processed in 0.045727 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表