首先感谢思归指点了我如何重用Treeview这个Microsoft IE Webcontrol。相关内容请参见http://community.111com.net/Expert/TopicView.asp?id=3365114
IE webcontrol可以单独用于html文件中,也可以用于web form的.net 程序;
对于后者,使用中可以通过编程加入节点,也可以绑定;
对于后者,绑定的时候,可以帮定一个xml格式的字符串,也可以绑定一个xml文件,只要向Treeview控件的TreeNodeSrc属性赋值;
对于后者,有两种可能,一种是绑定到一个已经存在于硬盘的xml文件,或者说TreeNodeSrc的值设定为"...../foo.xml"上、另一种则是先创建一个aspx页面动态产生xml格式的输出,绑定到这个页面。
对于后者,会产生错误。
原因是,Treeview控件其实有两个地方可以绑定,或者说,解析数据源产生树的结构,一是在Server Side,一是在Browser Side。在Treeview控件Render的过程中,如果发现TreeNodeSrc是一个地址,它就会试图读这这个地址的内容,然后解析,并显式的写到web页面的输出中,这里会产生错误。
我的解决方法是,定义一个扩充的属性TreeNodeSrcA,它不在server端被解析,而是原封不动的写到Browser side,然后Treeview的htc再读取TreeNodeSrcA指向的url的内容,并解析。
具体步骤如下:
一、在Treeview的源程序treeview.cs文件的
public class TreeView : BasePostBackControl
的部分加入这样一段
///
/// Url of the xml file to import as the TreeNode content of the tree, Browser Side Binding
///
[
Category("Data"),
DefaultValue(""),
PersistenceMode(PersistenceMode.Attribute),
ResDescription("TreeNodeSrcA"),
]
public string TreeNodeSrcA
{
get
{