首先注意到了TreeView控件有一个属性TreeNodeSrc
这个属性可以指定一个固定格式的xml文件



既然是无限级菜单,肯定要用到递归来实现,于是就写了一个如下的递归算法







objRootElem.AppendChild(objXmlElem);

objXmlAttText.Value
objXmlElem.SetAttributeNode(objXmlAttText);

objXmlAttCB.Value
objXmlElem.SetAttributeNode(objXmlAttCB);
CreateXml(objXMLDoc, objXmlElem, id);
}
}然后用下面的方法来实现绑定






objXmlDoc.InsertBefore(objXmlDeclare, objXmlDoc.DocumentElement);
XmlElement objRootElem
objXmlDoc.AppendChild(objRootElem);
CreateXml(objXmlDoc, objRootElem, 
objXmlDoc.Save(
TreeView2.TreeNodeSrc
}到最后两行我就停住了,因为问题出现了
生成的objXmlDoc文件不知道用什么方式才能绑定上TreeNodeSrc
我试了试直接 TreeView2.TreeNodeSrc = objXmlDoc;
可是TreeNodeSrc是String型的数据,没办法
有没有什么方法可以不保存这个objXmlDoc文件而直接绑定呢?
于是就换了个办法来实现
TreeView有一个节点控件叫TreeNode,直接把数据给TreeNode上



DataSet ds 


Microsoft.Web.UI.WebControls.TreeNode treenode
treenode.Text
treenode.CheckBox
treenode.Expanded
rootnode.Nodes.Add(treenode);
CreateTree(id, treenode);
}
}用的是一样的递归思想,而且我发现这样做还比较简单一些,很多TreeNode自带的属性很方便修改
如果用Xml还要手动去添加每一个属性,麻烦
在PageLoad里触发这个方法



Microsoft.Web.UI.WebControls.TreeNode rootnode
rootnode.Expanded
TreeView2.Nodes.Add(rootnode);
CreateTree(
}这样就算大致实现了
另,数据库里的数据格式是这样的
-----------------------------------------
id text belong
1 aaaa 0
2 bbbb 0
3 cccc 0
4 dddd 1
5 eeee 2
6 ffff 4
博客主要讲述在开发中遇到生成的objXmlDoc文件无法绑定TreeNodeSrc的问题,因TreeNodeSrc是String型,无法直接绑定。随后尝试换方法实现,采用TreeView的节点控件TreeNode直接接收数据。
2952

被折叠的 条评论
为什么被折叠?



