你可以使用一个页面GetXml.aspx来生成xml数据,该页面根据接收的参数不同来生成不同的xml,然后使用节点的treeNodeSrc属性指向GetXml.aspx页面就可以了,当然,你需要通过querystring的方式来传递不同的参数.举例说来:
test.htm
----------------------------------------------------
<HTML xmlns:mydbtree>
<HEAD>
<?IMPORT NAMESPACE="mydbtree" IMPLEMENTATION="treeview.htc"/>
<script language=javascript>
function InitTree()
{
usertree.treeNodeSrc = "GetXml.aspx?type=root";
usertree.databind();
}
</script>
</HEAD>
<body onload="javascript:initTree();">
<mydbtree:treeview id="usertree"></mydbtree:treeview>
</body>
----------------------------------
GetXml.aspx.cs
----------------------------------
在GetXml.aspx的Page_Load事件中:
GenerateXml();
GenerateXml()的代码如下:
private void GenerateXml()
{
string strType = Request.QueryString["type"];
StringBuilder sXML=new StringBuilder();
sXML.Append("<?xml version=\"1.0\" encoding=\"gb2312\" ?>");
sXML.Append("<TREENODES>");
if (strType != null)
{
if (strType.ToLower() == "root")
{
sXML.Append("<TREENODE TEXT=\"根节点\" treeNodeSrc=\"GetXml.aspx?type=children\" expanded=\"false\">");
sXML.Append("</TREENODE>");
}
else if (strType.ToLower() == "children")
{
sXML.Append("<TREENODE TEXT=\"子节点\" treeNodeSrc=\"GetXml.aspx?type=children\" expanded=\"false\">");
sXML.Append("</TREENODE>");
}
}
sXML.Append("</TREENODES>");
Response.Clear()
Response.Write(sXML.ToString());
Response.End();
}
基本上就是这样,我这里只是做了一个简单的测试,是一个可以无限展开的树,你可以改进一下来符合你的需求,需要注意的是,你需要把treeview.htc拷贝到你的目录中来,如果需要图片,就需要重新指定imageUrl属性,注意节点的expanded必须为false,否则你没有点击+号,也会自动展开.