ASP.NET的TreeView控件使用

ASP.NET的TreeView控件使用

2023年6月22日发(作者:)

的TreeView控件使⽤⼀、定义1TreeViewTreeView 为⼀种⽤树形来组织数据的⽅式。例如我们经常看到的⽹页的菜单,有⼀级菜单,⼆级菜单,甚⾄还会有三级菜单。可以简单的把这些菜单看成⼀个树,每⼀个链接都是树的⼀个节点。。包含其他节点的节点称为“⽗节点”。包含在其他节点中的节点称为“⼦节点”。没有任何⼦节点的节点称为“叶节点”。不被任何其他节点包含并且是所有其他节点的上级节点的节点称为“根节点”。⼀个节点可以同时是⽗节点和⼦节点,但是不能同时为根节点、⽗节点和叶节点。节点为根节点、⽗节点还是叶节点决定着节点的⼏种可视化属性和⾏为属性。《转⾃MSDN》2. TreeNodeTreeNode 对象由以下四个⽤户界⾯ (UI) 元素组成,可以⾃定义或隐藏这些元素:展开节点指⽰图标,以表明节点是展开的、折叠的还是不可展开的。与节点关联的可选复选框。可选的节点图像。节点⽂本。 可以通过设置 TTreeView 类的 、 和 属性,指定可展开、可折叠和不可展开的节点的⾃定义图像。通过将 TTreeView 类的 属性设置为 ffalse,甚⾄可以完全隐藏展开节点的指⽰图标。 若要在节点旁显⽰复选框,请设置 TTreeView 类的 属性。如果 ShowCShowCheckBoxes 属性设置为 以外的⼀个值,将在指定的节点类型旁显⽰复选框。通过设置节点的 属性,可以有选择地重写个别节点的复选框。如果显⽰复选框,可使⽤ 属性确定复选框是否被选中。 通过设置 属性可以在节点中显⽰图像。此图像显⽰在节点⽂本旁。 TreeView 控件中的节点⽂本可以处于两种模式之⼀:选择模式或导航模式。默认情况下,会有⼀个节点处于选定状态。若要使⼀个节点处于导航模式,请将该节点的 属性值设置为空字符串 ("") 以外的值。若要使节点处于选择模式,请将节点的 NavNavigateUrl 属性设置为空字符串。 默认情况下,单击处于选择模式的节点会将页⾯回发到服务器并引发 事件。也可以选择设置节点的 SeSelectAction 属性,指定引发其他事件。有关更多信息,请参见 。若要确定哪个节点在被单击时处于选择模式,请使⽤ TTreeView 控件的 属性。 当节点处于导航模式时,禁⽤该节点的所有选择事件。单击处于导航模式的节点时,⽤户将被定向到指定的 URL。可以选择设置 属性以指定⽤来显⽰链接内容的窗⼝或框架。 TreeNode 类包含⼀些⽤于存储节点状态的属性。可使⽤ 属性确定节点是否被选定。若要确定节点是否已展开,请使⽤ 属性。 属性⽤于确定节点是否绑定到数据。当节点绑定到数据时,可以使⽤ 属性访问基础数据项。 此类提供了⼀些属性,有助于确定⼀个节点相对于树中其他节点的位置。使⽤ 属性确定节点的深度。使⽤ ValueValuePath 属性可以获得从当前节点到其根节点的分隔节点列表。若要确定节点的⽗节点,请使⽤ 属性。使⽤ 集合访问⼦节点。 有时,静态地预定义树结构并不可⾏,因为有时数据⼤⼩或⾃定义内容依⽤户输⼊⽽定。因此,TTreeView 控件⽀持动态节点填充。在运⾏阶段,可以在展开节点时填充该节点。有关动态节点填充的更多信息,请参见 属性。 有关 TTreeNode 的实例的初始属性值列表,请参见 构造函数。3. TreeNodeCollection TreeNodeCollection 类⽤于存储和管理 TTreeView 控件中的 TTreeNode 对象的集合。TTreeView 控件在其两个属性中使⽤ TTreeNodeCollection 类。在 属性中存储其根节点,在 属性中存储其选定的节点。TTreeNodeCollection 集合也⽤于 属性来存储⼦节点(如果有的话)。 TreeNodeCollection 类⽀持多种访问集合中的项的⽅法:使⽤ 索引器直接在特定的从零开始的索引处检索 TTreeNode 对象。使⽤ ⽅法创建可⽤于循环访问集合的枚举数。使⽤ fforeach (C#) 或 FFor Each (Visual Basic) 循环访问集合。使⽤ ⽅法将集合的内容复制到⼀个 对象中。 可以通过添加和移除 TTreeNode 对象以编程⽅式管理 TTreeNodeCollection。若要在集合中添加节点,请使⽤ 或 ⽅法。若要从集合中移除节点,请使⽤ 、 或 ⽅法。例如树形图---->⼆、⽤法例⼦:包含三个部分:⼀、⽹页前端())⼆、的配置(数据库的连接)三、数据库处理层()四、xml⽂件(效果:

实现: ⼀、⽹页前端(包含⼀个TreeView,⼀个XmlDataSource,两个LinkbButton(绑定删除与添加事件),三个label,两个select控件,⼀个TextBox) 实现:1、<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="" Inherits="m1" %>

; ;
添加
删除
⼆、g System;using c;using ;using ;using ;using trols;using ;using ty;using ;using ;using ;namespace WebApplication4{ public partial class WebForm1 : { protected void Page_Load(object sender, EventArgs e) {//页⾯加载刷新时都应该重新绑定与重写XMl⽂件 databindselect(); AddXML(); } protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) { } public void databindselect()//将数据库的数据绑定到select(ID=se)中 { string sql = "select * from Area"; DataSet ds = ql(sql); foreach (DataRow dr in [0].Rows) { (new ListItem(dr["name"].ToString(),dr["ID"].ToString()));//value=dr["name"],ID=dr["ID"] } } public void onclick_insert(object sender, EventArgs e)//插⼊事件的实现 { string name = _ng().Trim();//获取TextBox的值 int id = 32();//获取select(ID=se) 控件被选中的值 int level = 32(); //获取select(ID=se1)控件被选中的值 string selectsql="select * from Area where Name='"+name+"'"; DataSet ds = ql(selectsql);//判断所要插⼊的数据是否存在于数据库⾥⾯ int row = [0].; if (row == 0)//如果不存在,就插⼊到数据库中 { string sql = "insert into Area(Name,parentID,level) values('" + name + "'," + id + "," + level + ")"; ql(sql);//将数据插⼊数据库中 AddXML();//重写XML⽂件以便重新绑定 } databindselect();//重新绑定到select

le = "~/App_Data/";//XMLDataSource1控件的⽂件配置 nd();//TreeView的绑定 } public void onclick_delete(object sender, EventArgs e) { //上级的勾选的⼦集的去除(就是那个select 的下拉列表)--->删除数据库中的⼦集结果--->删除选中的节点的数据库数据-->删除select控件的节点

if ( > 0)//如果有被选中的节点 { for (int i = 0; i < ; i++)//遍历节点,总数为被选中的节点的数量

{ string selectchildsql = "select * from Area where parentID=" + 32(tr[i].Value);//sql语句--找出此节点的⼦集 DataSet dsc = ql(selectchildsql);//以数据集的形式显⽰⼦集 //通过for循环删除select 中显⽰的选中的元素的⼦集 foreach (DataRow dr in [0].Rows) { (new ListItem(dr["Name"].ToString(), dr["ID"].ToString())); } string childnodesql = "delete from Area where parentID=" + 32(tr[i].Value); ql(childnodesql);//删除被选中的节点的数据库中的⼦集 string selectsql = "select * from Area where ID=" + 32(tr[i].Value); DataSet ds = ql(selectsql);//删除数据库中被选中的节点 foreach (DataRow dr in [0].Rows) { TreeNodeCollection tr = dNodes;// TreeNodeCollection 类⽤于存储和管理 TreeView 控件中的 TreeNode 对象的集合。此语句是找出被选 { (new ListItem(dr["Name"].ToString(), dr["ID"].ToString()));//删除被选中的节点在select控件的值 } string sql = "delete from Area where ID=" + 32(tr[i].Value); sql(sql); AddXML();//重写XML⽂件 } } le = "~/App_Data/";//数据源配置⽂件 nd();//重新绑定到控件 } XmlTextWriter tw = null; public void AddXML() { DataSet ds = ql("select * from Area"); string filename = rectory + "App_";//找到位置 tw = new XmlTextWriter(filename,null);//书写xml的⽂件 ting = ed;//额,这个不懂 tartDocument();//开始书写XMl⽂件 WriteXMl([0]);//写⼊数据集 ndDocument();//结束书写 (); (); } ///

/// 绑定⼀条数据的代码到xml⽂件中 /// /// public void WriteOneXML(DataRow dr)//在xml⽂件中写⼊⼀条数据例如或者,通常配合遍历使⽤ { switch(32(dr["level"]))//根据等级判断所要添加的头 { case 0 : tartElement("Area"); break; case 1: tartElement("Province"); break; case 2: tartElement("City"); break; } ttributeString("value",dr["ID"].ToString()); // // ttributeString("name",dr["Name"].ToString());

} static int count=0;//初始化所要循环的条数 public void WriteXMl(DataTable dt) {//在遍历⼦节点的时候,遍历完了就会⾃动停⽌。 DataSet ds=ql("select * from Area"); foreach (DataRow dr in )//循环的⼦集的元素 { { count++;//写的次数等于所要写的条数 WriteOneXML(dr); DataTable ddt = Getdata(dr);//遍历节点,搜寻他的所有⼦节点,并写⼊xml⽂件 WriteXMl(ddt);//递归寻找字节点 ndElement(); if (count != [0].)//这个count是为了遍历所有节点,这个树遍历完了之后才会清零,所以⼀开始要与[0].(总数)⽐ } else { count = 0;//如果整个树遍历完了之后就退出 break; } }

} public DataTable Getdata(DataRow dr)//获取它的⼦节点,并以⼀个数据集的形式返回 { string sql="select * from Area where parentID="+32(dr["ID"]); DataSet ds=ql(sql); return [0]; } protected void TreeView1_SelectedNodeChanged1(object sender, EventArgs e) {

} protected void TreeNodeCheckChanged1(object sender, EventArgs e) { } } }⼆、的配置 <> 三、数据库处理层using System;using c;using ;using ;using ;using uration;using ent;namespace { public static class DBhelper { ///

/// 查询数据 /// /// sql语句 /// public static DataSet QuerySql(string sql) { using (SqlConnection coon = new SqlConnection()) { tionString = tings["areastring"]; SqlDataAdapter da = new SqlDataAdapter(sql, coon); DataSet ds = new DataSet(); (ds); return ds; } } /// /// 数据的增删改查⼯作 /// /// /// public static int Handlesql(string sql) { using (SqlConnection coon = new SqlConnection()) { tionString = tings["areastring"]; (); SqlCommand cmd = new SqlCommand(); tion = coon; dText = sql; int x = eNonQuery();

(); return x; } }

}}四 Xml的配置(可以随便写,反正需要重新书写XML⽂件)

发布者:admin,转转请注明出处:http://www.yc00.com/web/1687382628a5920.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信