浏览器大全:是一个提供流行浏览器教程、在线学习分享的学习平台!

对于使用TreeView 控件的容易介绍

如何使用Microsoft.Web.UI.TreeView
Microsoft.Web.UI.TreeView是微软发布的一个用于显示树型结构的WEB Control,他的用处相信大家都已经很清楚了。
我这里主要介绍它的使用方法,以及进行数据帮定的办法
微软的这个TreeView是一个ServerControl,运行在服务器端,在使用的时候必需要进行注册。
首先引入名字空间:
<%@ import namespace="Microsoft.Web.UI.WebControls" %>
然后进行注册:
<%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls,

Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
这个命令是用来注册自定义控件的,具体含义可以查看msdn.
注册以后就可以在页面中使用了。TreeView使用TreeNode子标记来定义其中的节点,如下面的格式:
<form runat="server">
<iewc:Treeview>
<treenode text = "Parent1" runat="server">
<treenode text="child1"/>
<treenode text="child2"/>
<treenode text="child3"/>
</treenode>
<treenode text = "parent2">
<treenode text="child4"/>
<treenode text="child5"/>
<treenode text="child6"/>
</treenode>
</iewc:Treeview>
</form>
另一个比较有用的标记是<TreeNodeType>,这个标记可以用来定义显示节点的格式。例如,在默认的情况下,TreeView控件采用"+","-"那样的

图标来表示某一个节点是否处于展开状态,但是你可以使用TreeNodeType的ExpandImageUrl属性来自己定义展开后需要显示的图片,使用

imageUrl指定关闭时的图标。例:
<form id="myform" runat="server">
<mytree:treeview runat="server" ChildType="Folder">
<mytree:treenodetype Type="Folder"
 ExpandedImageUrl="./images/folderopen.gif"
 ImageUrl="./images/folder.gif" />
<mytree:treenode Text="Michigan">
 <mytree:treenode Text="Detroit" />
 <mytree:treenode Text="Farmington" />
 <mytree:treenode Text="Southfield" />
</mytree:treenode>
<mytree:treenode Text="Washington" >
 <mytree:treenode Text="Bellevue" />
 <mytree:treenode Text="Redmond" />
 <mytree:treenode Text="Woodinville" />
</mytree:treenode>
</mytree:treeview>
</form>
在你显示这个TreeView的时候你就可以发现,所有节点前面的图标已经变成了你自己定义的图标了。假如你希望第一层采用文件夹的打开关闭

样式的图标,第二层则采用类似于文件一样的图标,则可以使用childtype这样的属性来定制,例:
<form id="myform" runat="server">
<mytree:treeview runat="server" ChildType="Folder">
<mytree:treenodetype Type="Folder"
 ChildType="file"
 ExpandedImageUrl="./images/folderopen.gif"
 ImageUrl="./images/folder.gif" />
<mytree:treenodetype Type="file"
 ImageUrl="./images/file.gif" />

<mytree:treenode Text="Michigan">
 <mytree:treenode Text="Detroit" />
 <mytree:treenode Text="Farmington" />
 <mytree:treenode Text="Southfield" />
</mytree:treenode>
<mytree:treenode Text="Washington" >
 <mytree:treenode Text="Bellevue" />
 <mytree:treenode Text="Redmond" />
 <mytree:treenode Text="Woodinville" />
</mytree:treenode>
</mytree:treeview>
</form>
然后显示这个treeview,你会发现第一层的图标仍然是folder,第二层的图标则全部变成了file。依照这样的方式,你还可以定义第三层第四

层,只要使用childtype同Type进行对应一层层嵌套下去就可以了。
TreeView控件有三个属性可以用来使用css定义节点的格式,DefaultStyle,HoverStyle,SelectedStyle,看名字就可以知道大概的意思,不作具

体介绍了。
下面说一下treeview的数据帮定问题。
TreeView控件的数据帮定只能帮定到xml文件或者包含xml内容的字符串上去。被绑定的字符串或者文件必须采用如下格式:
<TREENODES>
<TREENODE TEXT="NODE1" />
<TREENODES>
在文件或者字符串中,大小写是敏感的,所以你必须使用全部大写的TREENODES标记把所有的节点标记包围起来,内部的节点标记则只要是前后

大小写一致就可以了。
然后把这个文件的url或者字符串赋值给TreeView或者TreeNode标记的TreeNodeSrc属性就可以了。使用codebehind模式的兄弟们需要注意,不

能在page_onload事件中指定这个属性,那样什么都显示不出来。
当然也可以利用sql server 2K提供的xml支持功能直接把TreeView同数据库中有层次关系的数据帮定起来。有两种方法可以选择:
一种方法是使用sql server 2k提供的web查询方式,返回一个xml字符串流,例:
<ie:treenode Text="root" type="tree" Expanded="true"
TreeNodeSrc="http://localhost/mySQLXML?sql=execute+sp_GenMyXML+@pid=1" />
但是这样做就必须还要创建一个xsl文件来把所获得的结果转换成TreeView可以接受的形式,也就是说里面只能包含<TREENODES>和<TreeNode>

两种标记。
另一种方法是直接采用sql server 2k提供的for xml子句来完成这个功能。你可以使用for xml子句的explicit命令来手动指定返回的xml中的

层次集合以及标记名称。我自己写了一个例子,用的是sql server 2k自带的NorthWind数据库:
SELECT 1as Tag,
 NULL as Parent,
 Customers.CompanyName as [TREENODE!1!Text],
 NULL as [TREENODE!2!Text],
 Nullas [TREENODE!2!NodeData]
FROM Customers

UNION ALL
SELECT 2,
 1,
 Customers.companyName,
 Orders.OrderID,
 [Order Details].Quantity
FROM Customers, Orders,[Order Details]
WHERE Customers.CustomerID = Orders.CustomerID and [Order Details].OrderID = Orders.OrderID
ORDER BY [TREENODE!1!Text], [TREENODE!2!Text]
FOR XML EXPLICIT
具体含义看sql server 的book online对for xml子句以及explicit命令的详细说明。
我们可以首先创建一个叫做NodeSource.aspx的文件,在这个文件中,使用SqlCommand的ExecuteXmlReader方法进行执行上面的sql 语句,返回

一个XmlReader对象,把xmlReader对象的内容做为输出。
然后指定一个treeview对象的TreeNodeSrc属性到这个文件的URL就可以了。
NodeSource.aspx文件示例如下:
public class NodeSource : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
String connectionString = "server=server;uid=sa;pwd=;database=northwind";
System.Data.SqlClient.SqlConnection connection = new

System.Data.SqlClient.SqlConnection(connectionString);
System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand();
command.Connection = connection;
command.CommandText = "GetXML";//包含上述Sql 语句的存储过程
command.CommandType = System.Data.CommandType.StoredProcedure;
System.Data.SqlClient.SqlDataAdapter sa= new System.Data.SqlClient.SqlDataAdapter(command);
connection.Open();
System.Xml.XmlReader xml = command.ExecuteXmlReader();
xml.Read();
Response.ContentType = "text/xml";
Response.Output.Write("<TREENODES><TREENODE text='parent'>" + xml.ReadOuterXml().Replace("\"","'") +

"</TREENODE></TREENODES>");
}
最后,说一下对TreeView WebControl的感觉,这个东东在设定autopostback=false的时候倒是还蛮好用的,但是如果设置autopostback=true,

那么就会闪的厉害,每次点击一个节点,都会刷新一边,然后重新定位到某个节点。但是如果不设定autopostback=true,则无法使用treeview

控件自己带的三个事件:Expand、Collapse、selectedIndexChanged。比较郁闷。但是利用一些客户端的教本以及msxml差不多可以实现不刷新

的TreeView控件,这些等下次再说吧。







相关软件

2345加速浏览器官方版

2345加速浏览器官方版 | 56.2MB

2345加速浏览器官方版

新一代2345加速浏览器采用Chromium和IE双内核,主打极速与安全特性。基于Chromium深度定制,引入网页智能预加载技术,访问网页更快速..

QQ浏览器官方正式版

QQ浏览器官方正式版 | 49.67MB

QQ浏览器官方正式版

QQ浏览器秉承TT浏览器1-4系列方便易用的特点,但技术架构不同,交互和视觉表现也重新设计,采用Chromium内核+IE双内核,让浏览快速稳定...

百度浏览器最新版下载

百度浏览器最新版下载 | 13.3MB

百度浏览器最新版下载

q百度浏览器,是一款简洁轻快、智能懂你的浏览器。依靠百度强大的搜索平台,在满足用户浏览网页的基础上,它整合百度体系业务优势,带给用户更方便的浏览方式功能...

UC浏览器官方正式版

UC浏览器官方正式版 | 44.2MB

UC浏览器官方正式版

UC浏览器(UC Browser)是UC Mobile Limited在2004年8月开发的一款软件,分uc手机浏览器和uc浏览器电脑版。UC浏览器是全球使用量最大的第三方手机浏览器...

猎豹浏览器2022最新版下载

猎豹浏览器2022下载 | 45MB

猎豹浏览器2022最新版下载

猎豹安全浏览器对Chrome的Webkit内核进行了超过100项的技术优化,访问网页速度更快。其具有首创的智能切换引擎,动态选择内核匹配不同网页...

360安全浏览器官方版下载

360安全浏览器下载 | 21.4MB

360安全浏览器官方版下载

360安全浏览器拥有全国最大的恶意网址库,采用恶意网址拦截技术,可自动拦截挂马、欺诈、网银仿冒等恶意网址。独创沙箱技术,在隔离模式即使访问****也不会感染...