FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

搜索
查看: 2960|回复: 5
打印 上一主题 下一主题

Tree绑定datatable,加载数据量大的问题?

[复制链接]
跳转到指定楼层
楼主
发表于 2013-5-17 08:38:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Tree加载datatable数据量大,加载很慢,有延迟加载的办法吗???
沙发
发表于 2013-5-17 09:54:23 | 只看该作者
板凳
 楼主| 发表于 2013-5-17 10:48:21 | 只看该作者
我的是datatable转换的
地板
发表于 2013-5-20 16:00:01 | 只看该作者
菜鸟程序员表示2天才搞定...

CS页面:
  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (!IsPostBack)
  4.             {
  5.                 LoadData();
  6.             }
  7.         }
  8.         private void LoadData()
  9.         {
  10.             DataSet ds = new DataSet();
  11.             ds.Tables.Add(CreateDataTable());
  12.             ds.Relations.Add("TreeRelation", ds.Tables[0].Columns["Id"], ds.Tables[0].Columns["ParentId"]);

  13.             foreach (DataRow row in ds.Tables[0].Rows)
  14.             {
  15.                 if (row.IsNull("ParentId"))
  16.                 {
  17.                     TreeNode node = new TreeNode();
  18.                     node.Text = row["Text"].ToString();
  19.                     node.NodeID = row["Id"].ToString();
  20.                     node.Leaf = (bool)row["isLeaf"];
  21.                     Tree1.Nodes.Add(node);
  22.                 }

  23.             }
  24.         }

  25.         private void ResolveSubTree(DataRow dataRow, TreeNode treeNode)
  26.         {
  27.             DataRow[] rows = dataRow.GetChildRows("TreeRelation");
  28.             if (rows.Length > 0)
  29.             {
  30.                 treeNode.Expanded = true;
  31.                 foreach (DataRow row in rows)
  32.                 {
  33.                     TreeNode node = new TreeNode();
  34.                     node.Text = row["Text"].ToString();
  35.                     treeNode.Nodes.Add(node);

  36.                     ResolveSubTree(row, node);
  37.                 }
  38.             }
  39.         }

  40.         protected void Tree1_NodeExpand(object sender, FineUI.TreeExpandEventArgs e)
  41.         {
  42.             DynamicAppendNode(e.Node);
  43.         }

  44.         private void DynamicAppendNode(TreeNode parentNode)
  45.         {
  46.             parentNode.Expanded = true;

  47.             TreeNode node = null;

  48.             DataSet ds = new DataSet();
  49.             ds.Tables.Add(CreateDataTable());
  50.             ds.Relations.Add("TreeRelation", ds.Tables[0].Columns["Id"], ds.Tables[0].Columns["ParentId"]);

  51.             foreach (DataRow row in ds.Tables[0].Rows)
  52.             {
  53.                 string parentid = row["ParentId"].ToString();
  54.                 if (parentid == parentNode.NodeID)
  55.                 {
  56.                     node = new TreeNode();
  57.                     node.Text = row["Text"].ToString();
  58.                     node.NodeID = row["Id"].ToString();
  59.                     node.Leaf = (bool)row["isLeaf"];
  60.                     parentNode.Nodes.Add(node);
  61.                 }

  62.             }
  63.         }

  64.         #region CreateDataTable

  65.         private DataTable CreateDataTable()
  66.         {
  67.             DataTable table = new DataTable();
  68.             DataColumn column1 = new DataColumn("Id", typeof(string));
  69.             DataColumn column2 = new DataColumn("Text", typeof(String));
  70.             DataColumn column3 = new DataColumn("ParentId", typeof(string));
  71.             DataColumn column4 = new DataColumn("isLeaf", typeof(bool));
  72.             table.Columns.Add(column1);
  73.             table.Columns.Add(column2);
  74.             table.Columns.Add(column3);
  75.             table.Columns.Add(column4);

  76.             DataRow row = table.NewRow();

  77.             row = table.NewRow();
  78.             row[0] = "xinjiang";
  79.             row[1] = "新疆";
  80.             row[2] = DBNull.Value;
  81.             row[3] = false;
  82.             table.Rows.Add(row);

  83.             row = table.NewRow();
  84.             row[0] = "wulumuqi";
  85.             row[1] = "乌鲁木齐";
  86.             row[2] = "xinjiang";
  87.             row[3] = false;
  88.             table.Rows.Add(row);

  89.             row = table.NewRow();
  90.             row[0] = "changji";
  91.             row[1] = "昌吉";
  92.             row[2] = "xinjiang";
  93.             row[3] = false;
  94.             table.Rows.Add(row);

  95.             row = table.NewRow();
  96.             row[0] = "tianshanqu";
  97.             row[1] = "天山区";
  98.             row[2] = "wulumuqi";
  99.             row[3] = true;
  100.             table.Rows.Add(row);

  101.             row = table.NewRow();
  102.             row[0] = "shayibakequ";
  103.             row[1] = "沙依巴克区";
  104.             row[2] = "wulumuqi";
  105.             row[3] = true;
  106.             table.Rows.Add(row);

  107.             row = table.NewRow();
  108.             row[0] = "wujiaqu";
  109.             row[1] = "五家渠";
  110.             row[2] = "changji";
  111.             row[3] = true;
  112.             table.Rows.Add(row);

  113.             row = table.NewRow();
  114.             row[0] = "mulei";
  115.             row[1] = "木垒";
  116.             row[2] = "changji";
  117.             row[3] = true;
  118.             table.Rows.Add(row);

  119.             return table;
  120.         }


  121.         #endregion
复制代码
aspx页面:
  1. <body>
  2.     <form id="form1" runat="server">
  3.     <x:PageManager ID="PageManager1" runat="server" />
  4.     <x:Tree ID="Tree1" Width="500px" EnableArrows="true" EnableLines="false" ShowHeader="true" OnNodeExpand="Tree1_NodeExpand"
  5.         Title="树控件" runat="server" AutoLeafIdentification="false">
  6.     </x:Tree>
  7.     </form>
  8. </body>
复制代码
5#
发表于 2013-5-20 16:05:07 | 只看该作者
ResolveSubTree这个函数是直接绑定tadatable的示例里带的,这里不用,忘去掉了
6#
发表于 2014-8-26 00:05:03 | 只看该作者
节点定义的三个属性,id,name,parentid
如是代码添加关系时提示并非所有节点都有父节点!求解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-25 23:55 , Processed in 0.045606 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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