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……