


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在ASP.NET中开发树状结构
摘要:在网页中用树状结构显示数据既清晰又简单,用户非常需要。本文从实际应用的角度,介绍了在ASP.NET中使用TreeView控件来创建树状结构的几种具体方法,可以方便地建立静、动态树状结构,较好地解决了树状结构在生成无限层次不定数量节点时非常困难而且容易出错的问题。关键字:Treeview控件、命名空间、静态树、动态树一、引言在网页开发工具ASP.NET的应用中,用户经常希望用树状控件来显示分类或层次数据,这样既简单又直观,但是ASP.NET本身没有提供此控件。当然程序员可以用ImageButton和Label等组成的用户控件和XML、XSL语言自己进行编写,它们可以显示有限层次少量节点的树状,但要生成无限层次不定数量的节点时就难以实现并且非常容易出错。作者通过对Microsoft下TreeView控件大量的实际应用,可以非常方便地实现任何类型的树状结构,较好地解决了上述问题。二、安装TreeView控件、导入命名空间
在你的Web程序使用TreeView控件之前,首先必须下载InternetExplorerWebBrowercontrols到你的开发机器上,然后导入命名空间。可访问以下网址下载:/ControlGallery/default.aspx?Category=38&tabindex=2下载后,再根据它的帮助文档进行一些必要的设置。
在成功下载并设置了之后,就可以开始使用TreeView控件。记住:在每个使用它的程序页面的开头都要导入它的命名空间:<%@Importnamespace="Microsoft.Web.UI.WebControls"%><%@RegisterTagPrefix="mytree"NameSpace="Microsoft.Web.UI.WebContro-ls"Assembly="Microsoft.Web.UI..WebControls,Version=26,Culture=neu-tral,PublicKeyToken=31bf3856ad364e35"%>三、三种方式添加节点,创建静态树
开发树状结构要定义一个TreeView控件,并向其中添加所需的Treenode节点。向TreeView控件中添加节点的方法有三种:1、
在页面中创建:所有的WebControls都要放在form中,Treeview当然也不例外:<body><formrunat="server">
<mytree:treeviewid="treeview1"runat="server">
<mytree:treenodetext="firstnode"/>
</mytree:treeview>
</form>
</body>
以上的语句创建了具有一个节点firstnode、名为treeview1的树。2、在程序代码中创建:
publicvoidPage_Load(objectsender,EventArgse)
{
if(!Page.IsPostBack)
{
TreeNodesnode=newTreeNode();
snode.Text="secondnode";
treeview1.Nodes.Add(snode);
}
}这样就为上例的treeview1又创建一个节点secondnode,Add方法是在树的最后添加节点。生成的结构3、从XML中导入:在TreeView控件中设定treenodesrc属性的值为numtree.xml:<mytree:treeviewid="treeview1"runat="server"treenodesrc="numtree.xml"/>
说明当生成树状控件时会自动从numtree.xml中读取树的节点内容,numtree.xml文件如下:<?XMLversion="1.0"encoding="utf-8"?><treenodes><treenodetext="firstnode"/><treenodetext="secondnode"/></treenodes>生成的树状结果同上面的例子相同四、方便快捷地创建动态树以上方法产生的树都是静态的,即使是从XML中导入,它的节点数目也是一定的。当我们要将数据库中的数据用树状结构表现出来时,并不知道这个树的层次和节点数,就需要在TreeView控件中动态地添加树节点。例如用树状结构表现一个公司有许多部门,部门下有员工。部门的数据放在表dept中(包含字段deptid和deptname),部门和员工的对应关系放在表deptperson中(包含字段deptid、personid和personname),并且这些字段都是string类型,这两个表放在数据库mydb.mdb中。这里添加节点的方法也有几种,在此介绍的方法是在页面加载时生成部门节点,当点击部门前的扩展图标按钮后再生成部门下的人员子节点。在页面中写入:<mytree:treeviewid="tr1"runat="serve"onexpand="treeview1_Expand"/>在<scriptLanguage="c#"runat="server"></script>中加入如下代码:OleDbConnectionmyconn;publicvoidPage_Load(Objectsender,EventArgse)//在页面加载时生成部门节点{stringstrmyconn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+Serve-r.MapPath(".")+"..\\DataBase\\mydb.mdb";myconn=newOleDbConnection(strmyconn);myconn.Open();if(!Page.IsPostBack){stringstrdept="select*fromdept";OleDbCommandmycomm=newOleDbCommand(strdept,myconn)OleDbDataReadermydr=mycomm.ExecuteReader();//用DataReader读取部门表中的数据while(mydr.Read()){TreeNodetmpnode=newTreeNode();tmpnode.Text=mydr["deptname"].ToString();tmpnode.NodeData=mydr["deptid"].ToString();tmpnode.Expandable=ExpandableValue.CheckOnce;treeview1.Nodes.Add(tmpnode);}mydr.Close();}}点击扩展图标按钮触发的事件treeview1_Expand的代码是:publicvoidtreeview1_Expand(objectsender,Microsoft.Web.UI.WebControls.Tr-eeViewClickEventArgse){TreeNodedeptnode=((Microsoft.Web.UI.WebControls.TreeView)sender).Nodes[(int.Par-se(e.Node))];if(deptnode.Nodes.Count==0){stringstrperson="selectdeptperson.personnamefromdeptperson,deptwhe-redept.deptid=deptperson.deptidanddept.deptid='"+deptnode.NodeData.T-oString()+"'";OleDbCommandmycomm1=newOleDbCommand(strperson,myconn);OleDbDataReadermydr1=mycomm1.ExecuteReader();while(mydr1.Read()){TreeNodepersonnode=newTreeNode();personnode.Text=mydr1["personname"].ToString();deptnode.Nodes.Add(personnode);}mydr1.Close();}}使用同样的方法和原理,我们可以创建比这更为复杂的树结构。TreeView控件还有许多其他的属性和事件,象ChildType,SelectedStyle,imageurl和onselectedindexchang
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025企业与个人间的借款合同范本
- 管培生培训汇报总结
- 2025年北海货运考试题目
- 北京理工大学2024本招生计划表
- 2025年兴安道路运输货运从业资格证模拟考试题库
- 2025年苏州货运从业资格证考试题及答案
- 外伤性食管穿孔的健康宣教
- 病区护理质量管理展示
- 小儿疱疹性角膜结膜炎的健康宣教
- 髂静脉压迫综合征的健康宣教
- 【初中历史】辽宋夏金元时期经济的繁荣 课件 2024-2025学年统编版七年级历史下册
- 2025-2030中国橄榄球行业市场全景调研及投资价值评估咨询报告
- 砌体结构检测试题及答案
- DB32T 5061.1-2025 中小学生健康管理技术规范 第1部分:心理健康
- 2025年宁波职业技术学院单招职业倾向性测试题库审定版
- 2025年洛阳科技职业学院单招职业技能测试题库及答案(考点梳理)
- 二零二五年度商业地产租赁合同模板:详细条款与风险防范指南3篇
- 《伯努利方程》课件
- 2025年浙江广播电视集团招聘笔试参考题库含答案解析
- 初中生心理健康教育讲座课件
- 品管圈PDCA案例-提高成人术后疼痛评估与护理规范率医院品质管理成果汇报
评论
0/150
提交评论