Asp.net TreeView动态加载节点(一)
来源:互联网 发布:挂机赚app软件 编辑:程序博客网 时间:2024/05/21 08:45
1.TreeNode的PopulateOnDemand="True"后节点就是动态从后台加载的.
2.但是如果上层TreeView的EnableClientScript="false",就会导致页面Postback
3.TreeView的TreeNodePopulate是PopulateOnDemand="True"并且TreeNode内已有数据才触发的
4.TreeNode的Depth属性是指从根结点算起到现在节点的层数,根结点层数为0
5.TreeNode NewNode = new TreeNode(row["CategoryName"].ToString(),row["CategoryID"].ToString())的第一个参数设置了
TreeNode类的Value 属性值.这个属性值会在发生TreeNodePopulate()事件的TreeNode对像回传用到.sqlQuery.Parameters.Add
("@categoryid", SqlDbType.Int).Value =node.Value;
MSDN资源:
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.treeview.aspx
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.treenode.aspx
(本文作者:ikmb MSN:ikmb@163.com)
附代码:
一、HTML
- <asp:SqlDataSource ID="SqlDataSource1" runat="server"
- ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
- SelectCommand="SELECT [CategoryID], [CategoryName] FROM [Categories]">
- </asp:SqlDataSource>
- <asp:TreeView ID="TreeView1" runat="server" MaxDataBindDepth="2"
- ontreenodepopulate="TreeView1_TreeNodePopulate" EnableClientScript="true" ExpandDepth="0">
- <Nodes>
- <asp:TreeNode PopulateOnDemand="True" Text="产品列表" Value="产品列表"></asp:TreeNode>
- </Nodes>
- </asp:TreeView>
二、C#
- protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
- {
- if (e.Node.ChildNodes.Count == 0)
- {
- switch (e.Node.Depth)
- {
- case 0:
- PopulateCategories(e.Node);
- break;
- case 1:
- PopulateProducts(e.Node);
- break;
- }
- }
- }
- void PopulateCategories(TreeNode node)
- {
- SqlCommand sqlQuery = new SqlCommand(
- "Select CategoryName, CategoryID From Categories");
- DataSet resultSet;
- resultSet = RunQuery(sqlQuery);
- if (resultSet.Tables.Count > 0)
- {
- foreach (DataRow row in resultSet.Tables[0].Rows)
- {
- TreeNode NewNode = new
- TreeNode(row["CategoryName"].ToString(),
- row["CategoryID"].ToString());
- NewNode.PopulateOnDemand = true;
- NewNode.SelectAction = TreeNodeSelectAction.Expand;
- node.ChildNodes.Add(NewNode);
- }
- }
- }
- void PopulateProducts(TreeNode node)
- {
- SqlCommand sqlQuery = new SqlCommand();
- sqlQuery.CommandText = "Select ProductName From Products " +
- " Where CategoryID = @categoryid";
- sqlQuery.Parameters.Add("@categoryid", SqlDbType.Int).Value =
- node.Value;
- DataSet ResultSet = RunQuery(sqlQuery);
- if (ResultSet.Tables.Count > 0)
- {
- foreach (DataRow row in ResultSet.Tables[0].Rows)
- {
- TreeNode NewNode = new
- TreeNode(row["ProductName"].ToString());
- NewNode.PopulateOnDemand = false;
- NewNode.SelectAction = TreeNodeSelectAction.None;
- node.ChildNodes.Add(NewNode);
- }
- }
- }
- private DataSet RunQuery(SqlCommand sqlQuery)
- {
- string connectionString =
- ConfigurationManager.ConnectionStrings
- ["NorthwindConnectionString"].ConnectionString;
- SqlConnection DBConnection =
- new SqlConnection(connectionString);
- SqlDataAdapter dbAdapter = new SqlDataAdapter();
- dbAdapter.SelectCommand = sqlQuery;
- sqlQuery.Connection = DBConnection;
- DataSet resultsDataSet = new DataSet();
- try
- {
- dbAdapter.Fill(resultsDataSet);
- }
- catch
- {
- labelStatus.Text = "Unable to connect to SQL Server.";
- }
- return resultsDataSet;
- }
- Asp.net TreeView动态加载节点(一)
- Asp.net TreeView动态加载节点(二)(结合Jquery实现节点加载效果)
- Henry手记-VB.NET中动态加载Treeview节点(一)
- Henry手记-VB.NET中动态加载Treeview节点(一)
- VB.NET中动态加载Treeview节点(二)
- VB.NET中动态加载Treeview节点
- VB.NET中动态加载Treeview节点
- asp.net使用treeview控件,使用reeNodePopulate事件加载节点
- Asp.Net C#程序代码动态添加TreeView节点
- asp.net:AJAX+LINQ+TreeView 动态填充多级节点
- treeview动态加载树节点
- Henry手记-VB.NET中动态加载Treeview节点(二)
- Henry手记-VB.NET中动态加载Treeview节点(二)
- ASP.NET treeview与xml实现动态添加节点,元素,文本(text)
- asp.net动态加载dtree.js树treeview
- 采用递归算法为TreeView控件加载节点(节点信息保存于SqlServer) ASP.Net相...
- asp.net动态生成TreeView
- asp.net TreeView动态添加
- lucene Field部分参数设置含义
- IE与FireFox的兼容问题
- ireport+jasperreport开源报表中使用javabean作为数据源的详细实现过程
- 使用VS05的服务资源管理器设置表的主键自增
- 类似google的分页索引算法
- Asp.net TreeView动态加载节点(一)
- ASP.NET利用JavaScript实现无刷新闪烁二级联动菜单
- java基础知识理解
- 推荐-最新1000多个单机游戏下载,不用注册直接下载!
- 开博前的唠叨 -- 纪录一些做QA的心得
- ORA-01427 单行子查询返回多于一个行
- 解决问题的方法
- iReport 笔记(一) 序
- 在手机上使用Gmail,需要证书的问题。