随笔 - 142  文章 - 2  评论 - 4  阅读 - 57303

控件(三)——TreeView控件以XmlDataSource控件为数据源实现简单的绑定

TreeView控件功能非常强大,今天,我们只是窥其一角。
我们实现的例子是:TreeView控件与XmlDataSource控件绑定,然后在网页显示选中项。

首先我们添加一个xml,取名为tv.xml。在其中写上如下代码:

<?xml version="1.0" encoding="utf-8"?>
<gen1 text="总目录">
  <zil text="第一个子目录" url="~/one/a.aspx">
    <sun1 text="叶目录A页" url="~/one/cone/a.aspx">
      <ye text="B页" url="~/one/cone/b.aspx"></ye>
    </sun1>
  </zil>
  <zi2 text="二的一个目录" url="~/two/a.aspx">
    <sun2 text="二个也目录A页" url="~/two/a.aspx"></sun2>
    <sun3 text="B页" url="~/two/b.aspx"></sun3>
  </zi2>
</gen1>

 

这时我们在default.aspx页面中添加一个TreeView控件,我们可以选定它的样式(大方美观即可),之后配置它的数据源。如下图:

这是,界面自然后这样显示:

我们添加后台代码:

        protected void Button1_Click(object sender, EventArgs e)
        {//将选中项的值打印出来
            if (TreeView1.CheckedNodes.Count>0)
            {//如果有项被选中
                foreach (TreeNode  tn in TreeView1.CheckedNodes )
                {//迭代所有被选中的节点
                    if (tn.ChildNodes.Count > 0)
                    {//如果被选中项下面还有子节点
                        foreach (TreeNode ctn in tn.ChildNodes)
                        {//迭代所有节点,把值读出来
                            Response.Write(ctn.Text + "<br>");
                        }
                    }
                    else
                    {//如果下面没有节点了,说明是页节点,直接读出选项的值
                        Response.Write(tn.Text +"<br>");
                    }
                }
            }
        }

        protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
        {
            Label1.Text = TreeView1.SelectedNode.Text;
        }

        protected void TreeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
        {
            Label1.Text = "你折叠了" + e.Node.Text;
        }

        protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
        {
            Label1.Text = "你展开了" + e.Node.Text;
        }

        protected void TreeView1_TreeNodeCollapsed(object sender, TreeNodeEventArgs e)
        {

        }

 

显示效果:

posted on   刘正权的博客  阅读(330)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2012年5月 >
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9

点击右上角即可分享
微信分享提示