现在的位置: 首页 > 综合 > 正文

微软treeview控件异步加载实现方式

2013年03月01日 ⁄ 综合 ⁄ 共 1468字 ⁄ 字号 评论关闭

你可以使用一个页面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,否则你没有点击+号,也会自动展开.

 

抱歉!评论已关闭.