ASP.NET 中的递归 TreeView

2024-04-01

我有一个列表类型的对象,我希望用它来填充 asp.net c# 中的树视图。

每个对象项都有:

id | Name | ParentId

例如:

id | Name     | ParentId
-------------------------
1  | Alice    | 0
2  | Bob      | 1
3  | Charlie  | 1
4  | David    | 2

在上面的例子中,父母是爱丽丝,有两个孩子鲍勃和查理。大卫是鲍勃的孩子。

我在尝试在 C# ASP.NET 中递归动态填充树视图时遇到了很多问题

有人有一个简单的解决方案吗?

顺便说一句:您可以使用 People.Id、People.Name 和 People.ParentId 来访问成员,因为它是属于列表的对象。

到目前为止,我可以向您发布我的代码(进行了多次尝试),但不确定它有多大用处。


我认为这应该让你开始。我创建了一个MyObject类来模仿你的对象。

public class MyObject
{
    public int Id;
    public int ParentId;
    public string Name;
}

这是一种基于列表递归添加树视图节点的方法。

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        List<MyObject> list = new List<MyObject>();
        list.Add(new MyObject(){Id=1, Name="Alice", ParentId=0});
        list.Add(new MyObject(){Id=2, Name="Bob", ParentId=1});
        list.Add(new MyObject(){Id=3, Name="Charlie", ParentId=1});
        list.Add(new MyObject(){Id=4, Name="David", ParentId=2});            

        BindTree(list, null);            
    }
}

private void BindTree(IEnumerable<MyObject> list, TreeNode parentNode)
{
    var nodes = list.Where(x => parentNode == null ? x.ParentId == 0 : x.ParentId == int.Parse(parentNode.Value));
    foreach (var node in nodes)
    {
        TreeNode newNode = new TreeNode(node.Name, node.Id.ToString());
        if (parentNode == null)
        {
            treeView1.Nodes.Add(newNode);
        }
        else
        {
            parentNode.ChildNodes.Add(newNode);
        }
        BindTree(list, newNode);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET 中的递归 TreeView 的相关文章

  • C free() 是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 malloc 和 free 如何工作 https stackoverflow com questions 1119134 how malloc and free work include
  • XPATH 查询、HtmlAgilityPack 和提取文本

    我一直在尝试从名为 tim new 的类中提取链接 我也得到了解决方案 给出了解决方案 片段和必要的信息here https stackoverflow com questions 2982862 extracting a table ro
  • MFC CList 支持复制分配吗?

    我在 MSVC 中查找了 CList 定义afxtempl h http www cppdoc com example mfc classdoc MFC AFXTEMPL H html并记录在MSDN http msdn microsoft
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 如何以编程方式播放 16 位 pcm 数组 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个包含 16 位 pcm 值的短 数组 我希望能够在不添加任何标题 也不将任何文件保存到内存的情况下播放它 我知道我可能需要一个提供
  • C++ 将联合强制转换为其成员类型之一

    以下对我来说似乎完全符合逻辑 但不是有效的 C 联合不能隐式转换为其成员类型之一 有人知道为什么不这样做的充分理由吗 union u int i char c function f int i int main u v v i 6 f v
  • C# 编译器数字文字

    有谁知道 C 编译器数字文字修饰符的完整列表 默认情况下 声明 0 使其成为 Int32 声明 0 0 使其成为 Double 我可以在末尾使用文字修饰符 f 来确保某些内容被视为 Single 例如像这样 var x 0 x is Int
  • 在 C# 中何时使用 ArrayList 而不是 array[]?

    我经常使用一个ArrayList而不是 正常 array 当我使用时 我感觉好像我在作弊 或懒惰 ArrayList 什么时候可以使用ArrayList在数组上 数组是强类型的 并且可以很好地用作参数 如果您知道集合的长度并且它是固定的 则
  • 用于连接 DataTable 上的动态列的动态 LINQ

    我目前遇到的情况不确定如何继续 我有两个从数据库填充的数据表 我还有一个可用的列名称列表 可用于将这两个数据表连接在一起 我希望编写一组 LINQ 查询 这些查询将 显示两个数据表中的行 内部联接 用于从一个数据表更新另一个数据表 显示一个
  • 无法为 wsdl 文件创建服务引用

    I have wsdl文件和xsd我本地机器上的文件 我想在项目中添加服务引用 我没有网络服务 我只有wsdl file 我收到以下错误 The document was understood but it could not be pro
  • C# 中的 C/C++ 代码编译器

    在 C 中 我可以使用下面的代码编译 VB 和 C 代码 但无法编译 C C 代码 有什么办法可以做到这一点吗 C 编译器 public void Compile string ToCompile string Result null st
  • 如何在审计触发器中使用system_user但仍使用连接池?

    我想做以下两件事 在我的数据库表上使用审计触发器来识别哪个用户更新了什么 使用连接池来提高性能 对于 1 我在数据库触发器中使用 system user 来识别进行更改的用户 但这阻止我执行需要通用连接字符串的 2 有没有一种方法可以让我充
  • C 中使用 getrandom 实现随机浮点数

    我试图生成一个介于 0 和 1 之间的随机浮点数 无论是在 0 1 还是 0 1 对我来说都不重要 网上关于此的每个问题似乎都涉及rand 呼叫 播种time NULL 但我希望能够每秒多次调用我的程序 并每次都获得不同的随机数 这引导我找
  • 浮点字节序?

    我正在为实时海上模拟器编写客户端和服务器 并且由于我必须通过套接字发送大量数据 因此我使用二进制数据来最大化可以发送的数据量 我已经了解整数字节顺序以及如何使用htonl and ntohl为了规避字节顺序问题 但我的应用程序与几乎所有模拟
  • 在哪里可以下载没有 Visual Studio 2010 的 C# 4.0 编译器?

    我知道 CTP VS 2010 映像 但我可以只下载 NET Framework 4 0 和 C 编译器吗 AFAIK VS 2010 CTP 仅作为 VM 映像提供 我不相信 Microsoft 发布了 VS 的安装程序 其中一个绝对不适
  • C 语言中的 Alpha 混合 2 RGBA 颜色[重复]

    这个问题在这里已经有答案了 可能的重复 如何快速进行阿尔法混合 https stackoverflow com questions 1102692 how to do alpha blend fast 对 2 个 RGBA 整数 颜色进行
  • Linq.Select() 中的嵌套表达式方法调用

    I use Select i gt new T 每次手动点击数据库后将我的实体对象转换为 DTO 对象 以下是一些示例实体和 DTOS 用户实体 public partial class User public int Id get set
  • printf或iostream如何指定点后的最大位数

    字符串采用什么格式printf or iomanip我应该使用 iostream 中的运算符以以下格式打印浮点数 125 0 gt 125 125 1 gt 125 1 125 12312 gt 125 12 1 12345 gt 1 12
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost
  • 嵌入式二进制资源 - 如何枚举嵌入的图像文件?

    我按照中的说明进行操作这本书 http www apress com book view 9781430225492 关于资源等的章节 我不太明白的是 如何替换它 images Add new BitmapImage new Uri Ima

随机推荐

  • flutter中如何在某个时间执行一个方法?

    如何在固定时间执行一个方法 比如我想在下午 2 30 运行一个方法 我了解计时器功能 但是运行计时器功能这么长时间是个好主意吗 同样 该方法在一天内会被调用多次 Edited 我努力了android alarm manager https
  • R data.table 加速 SI/公制转换

    情况是这样的 我有一个 8500 万行 18 列的表 其中三列的值采用公制前缀 SI 表示法 请参阅公制前缀 http en wikipedia org wiki Metric prefix维基百科上 这意味着我有这样的号码 1M 而不是
  • 访问 <#list> 中对象的属性

    Solution 我之前曾尝试向 LineItem 类添加访问器 例如 public String getItemNo return itemNo 并将 FTL 从 lineItem itemNo to lineItem getItemNo
  • PushStreamContent 流在负载下不会刷新

    我正在使用 PushStreamContent 来保持与每个客户端的持久连接 每 20 秒向每个客户端流推送短心跳消息对于 100 个客户端来说效果很好 但在大约 200 个客户端时 客户端首先开始延迟几秒钟接收 然后根本不显示 我的控制器
  • HighCharts图像导出

    我在我的应用程序中使用 HighChart 我想通过单击按钮导出图表图像http jsfiddle net hfrntt fXHB5 1896 http jsfiddle net hfrntt fXHB5 1896 但我想将图像保存在预定义
  • 无法从 Scrapy 脚本访问 request.response.meta['redirect_urls']

    我无法访问request response meta redirect urls 来自我的 Scrapy 脚本 但在 Scrapy shell 中访问同一网页的此信息没有问题 当我打印钥匙时request response meta我只看到
  • 如何使用 Firebase Cloud Messaging 自动增加 iOS 通知徽章?

    如何使用 Firebase Cloud Messaging 自动增加 iOS 通知徽章 是否可以做类似的事情 1 or 您可以在 通知负载 https firebase google com docs cloud messaging htt
  • Onclick 或 href 最适合在按钮中打开链接

    这是最好的方法 使用按钮打开链接
  • 使用 webdriver python 的触摸事件示例?

    我见过大约100个Java Webdriver 的触摸事件示例 http android developers blogspot com 2011 10 introducing android webdriver html在线 但没有一个P
  • 删除 pandas 数据框中的所有特殊字符

    我无法从 pandas 数据框中删除所有特殊字符 你能帮我吗 我尝试过这样的事情 df df replace r W regex True 因为我在最近的一篇文章中发现了它 但是当我执行时 特殊字符 不会消失 我知道在 PostgresQL
  • Firebase 删除不应该的值

    我正在使用 firebase 编写 Android 应用程序 我有一个部分 用户发送取件请求 该请求显示在司机的请求片段中 为了处理接受 拒绝 我已经设置了它 因此当您单击 接受 时 它会创建另一个包含已接受请求的 Firebase 子项
  • express - Angular2错误:ENOENT:刷新时没有这样的文件或目录

    我有一个公共文件夹 其中放置了 angular2 应用程序 现在我正在尝试设置一个带有始终返回index html 的包罗万象的路由的快速服务器 需要明确的是 根据这个问题 https stackoverflow com questions
  • OCaml 数据类型定义中的方括号“[”和“]”是什么意思?

    I saw 下列 https coq github io doc v8 11 api coq Genarg index html type rlevel type rlevel rlevel 但我以前从未见过这种情况 并且 ADT 代数数据
  • 是否有最近键映射数据结构?

    我遇到一种情况 我需要找到与我请求的键最接近的值 它有点像定义键之间距离的最近地图 例如 如果我在映射中有键 A C M Z 则对 D 的请求将返回 C 的值 任何想法 大多数树数据结构使用某种排序算法来存储和查找键 许多这样的实现可以找到
  • Lollipop中导航栏的默认Alpha值

    如果你设置android windowTranslucentNavigation to true在 Lollipop 主题中 导航栏不会像 KitKat 那样完全半透明 相反 它是一个黑暗的半透明背景 这里有人知道该背景的 alpha 值是
  • Spring WS:如何将拦截器应用到特定端点

    我在 Spring 应用程序上有多个工作 SOAP Web 服务 使用 httpBasic 身份验证 并且我需要在其中之一上使用 WS Security 以允许使用以下 Soap 标头进行身份验证
  • 使用 CSS 排列元素时遇到问题

    我有一个包含链接的无序列表 有些链接是文本 有些是带有图标的文本 但我有一个问题 就是我无法让他们排队 有人可以建议我在这里做错了什么吗 我尝试了不同的组合 但仍然无法让事情排列起来 这是我的 HTML 代码 请注意 我使用了另一个网站的图
  • 构建预配置的 debian 包

    我正在尝试构建一个 debian 软件包 它会自动配置我的所有计算机以使用相同的配置文件和设置 例如 我尝试设置诸如 alter etc default hostapd conf 之类的内容 我目前正在通过使用 dh install 将文件
  • 使用 ActiveSupport::Concern 功能时,如何通过将“嵌套”模块包含为该类的实例方法来将方法添加到类中?

    我正在使用 Ruby 1 9 2 和 Ruby on Rails v3 2 2 gem 在我上一个问题之后使用 Ruby on Rails ActiveSupport Concern 功能时如何 嵌 套 模块的包含 https stacko
  • ASP.NET 中的递归 TreeView

    我有一个列表类型的对象 我希望用它来填充 asp net c 中的树视图 每个对象项都有 id Name ParentId 例如 id Name ParentId 1 Alice 0 2 Bob 1 3 Charlie 1 4 David