FineUI 官方论坛

标题: Tree绑定datatable,加载数据量大的问题? [打印本页]

作者: 在路上    时间: 2013-5-17 08:38
标题: Tree绑定datatable,加载数据量大的问题?
Tree加载datatable数据量大,加载很慢,有延迟加载的办法吗???

作者: spmouse    时间: 2013-5-17 09:54
有例子啊
http://fineui.com/demo/#/demo/tree/tree_ajax.aspx
作者: 在路上    时间: 2013-5-17 10:48
我的是datatable转换的
作者: spmouse    时间: 2013-5-20 16:00
菜鸟程序员表示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>
复制代码

作者: spmouse    时间: 2013-5-20 16:05
ResolveSubTree这个函数是直接绑定tadatable的示例里带的,这里不用,忘去掉了
作者: icelemon    时间: 2014-8-26 00:05
节点定义的三个属性,id,name,parentid
如是代码添加关系时提示并非所有节点都有父节点!求解决办法




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