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

ext.net中treepanel的用法,说root只能有一次。怎么办?
private void addtype(string treegrade, Ext.Net.TreeNode pNode)
  {
  sqlstr = "select depno,depname,supdepno from dbo.HM_department where supdepno='" + treegrade + "'";
  DataTable tab = mydb.ExecQuerySql(sqlstr);

  string pt_id;
  string pt_name;
  string pt_supno;

  if (tab.Rows.Count > 0)
  {
  for (int i = 0; i < tab.Rows.Count;i++)
  {
  pt_id = tab.Rows[i]["depno"].ToString();
  pt_name = tab.Rows[i]["depname"].ToString();
  pt_supno = tab.Rows[i]["supdepno"].ToString();

  Ext.Net.TreeNode node = new Ext.Net.TreeNode(pt_id,pt_name,Ext.Net.Icon.BookAdd);

  if (pNode == null)
  {
  TreePanel1.Root.Add(node);
  addtype(pt_id, node);
  }
  else
  {
  pNode.Nodes.Add(node);
  addtype(pt_id, node);
  }

  }
  }

  }

------解决方案--------------------
说得很清楚了,Root只能有一个
TreePanel1.Root.Add只能执行一次
你递归addType,自然会执行多次
正确的做法是把TreePanel1.Root.Add单独出来,addType递归添加子节点

void buildRoot()
{
TreePanel1.Root.Add(root);
addtype("",root);
}
void addtype(string treegrade, Ext.Net.TreeNode pNode)
{
addtype("",childNode);
}
------解决方案--------------------
另外,注意RootVisible属性
------解决方案--------------------
我已经提示你了……
RootVisible=false;
TreePanel1.Root.Add(new Ext.Net.TreeNode());
然后你的唯一一个root就会没掉


然后第二层的childNode看起来就像是Root……