日期:2014-05-17  浏览次数:20386 次

treeview动态目录树一级一级加载节点,比如说一开始只加载一级节点,当点击相应的一级节点时再加载其对应的二级节点,请各位高手指教!!急~~
我现在要做一个treeview动态绑定数据库表中的内容,表结构如下:  
s_kmbm(科目编码) i_wdid(网点) i_grade(科目级别) s_bm1(编码1) s_bm2(编码2) s_bm3 s_bm4 s_bm5  
101 0 1 101 null null null null  
10101 1 2 101 01 null null null  
102 1 1 102 null null null null  
10201 1 2 102 01 null null null  
其中i_grade是用来判别节点类型的.  
请问各位高手如何实现绑定treeview的功能,实现树形目录树. 
s_kmbm值是根据s_bm1,s_bm2,s_bm3,s_bm4,s_bm5这5列的值而来的即下面的简写表达式:  
s_kmbm=s_bm1+s_bm2+s_bm3+s_bm4+s_bm5  
i_grade是int类型,它是判断划分级别的依据. 

1.节点的text显示s_kmbm的值,  
2. i_grade=1时,s_bm2,s_bm3,s_bm4,s_bm5都是null 
实现功能代码如下:
protected void Page_Load(object sender, EventArgs e)
  {
  if (!IsPostBack)
  {
  SqlConnection conn = new SqlConnection();
  conn.ConnectionString = xxxx;
  conn.Open();
  SqlDataAdapter sda = new SqlDataAdapter("select s_kmbm,i_grade,s_bm1,s_bm2,s_bm3,s_bm4,s_bm5 from Table1 order by i_grade desc", conn);
  DataTable dt = new DataTable();
  try
  {
  sda.Fill(dt);
  sda.Dispose();
  conn.Close();
  conn.Dispose();
  }
  catch
  {
  sda.Dispose();
  conn.Close();
  conn.Dispose();
  conn = null;
  sda = null;
  }

  TreeNode tr = new TreeNode("根节点", "0");

  AddNode(tr, dt);
  this.TreeView1.Nodes.Clear();
  this.TreeView1.Nodes.Add(tr);
  }
  }
  private void AddNode(TreeNode tn, DataTable dt)
  {
  for (int i = 0; i < dt.Rows.Count; i++)
  {
  int grade = int.Parse(tn.Value) + 1;
  if (dt.Rows[i].ItemArray[1].ToString() == "1" && tn.Value == "0")
  {
  TreeNode subtn = new TreeNode(dt.Rows[i].ItemArray[0].ToString(), dt.Rows[i].ItemArray[1].ToString());
  AddNode(subtn, dt);
  tn.ChildNodes.Add(subtn);
  }
  else if ((int.Parse(dt.Rows[i].ItemArray[1].ToString()) - grade) == 0)
  {
  string pNode = "";
  for (int k = 2; k < grade + 1; k++)
  {
  pNode += dt.Rows[i].ItemArray[k].ToString();
  } if (pNode == tn.Text)
  {
  TreeNode subtn = new TreeNode(dt.Rows[i].ItemArray[0].ToString(), dt.Rows[i].ItemArray[1].ToString());
  AddNode(subtn, dt);
  tn.ChildNodes.Add(subtn);
  }
  }
  }
  }

由于数据表中有许多条记录,现在如何让它的节点一级一级加载?比如说一开始只加载一级节点,当点击相应的一级节点时再加载其二级节点,请各位高手指教???急~~~

------解决方案--------------------
检查一下权限。

另外要注意一点,给你看代码是让你参考方法思路,不是复制。