如何以层次结构显示非标准化数据?

2023-11-30

我的问题是我想以层次结构显示数据,如下所示:

  • Democrat
    • County Clerk
      • 候选人1
      • 候选人2
    • Magistrate
      • 候选人1
      • 候选人2
      • 候选人3

但我正在检索这样的数据集:

Party | Office | Candidate
--------------------------------------------
Democrat | County Clerk | Candidate 1
Democrat | County Clerk | Candidate 2
Democrat | Magistrate | Candidate 1
Democrat | Magistrate | Candidate 2
Democrat | Magistrate | Candidate 3

我计划使用嵌套中继器,但我需要党的不同值,然后需要该党内办公室名称的不同值才能做到这一点。

是否有任何 .NET 函数可以轻松完成我想要做的事情?除了中继器之外,还有更好的方式来显示信息吗?

提前致谢!


如果可以修改存储过程,我会推荐邻接表形式的结果集:

ID    Name          ParentID
1     Democrat      NULL
2     County Clerk  1
3     Magistrate    1
4     Candidate 1   2
5     Candidate 2   2
6     Candidate 1   3
7     Candidate 2   3
8     Candidate 3   3

它减少了检索的数据量,并允许您根据父子关系进行递归编程。你只需从根源开始。这种方法通过直接在 StringBuilder 中构建字符串文字,避免了使用嵌套 Repeaters 的麻烦。

StringBuilder sb = new StringBuilder();
DataTable dt = new DataTable();
someDataAdapter.Fill(dt);

// find the roots:
DataRow[] roots = dt.Select("parentId is null");

sb.Append("<ul>");
foreach (DataRow child in roots)
{
    WriteNode(child, sb);
}
sb.Append("</ul>");


// recursively write out each node
public static void WriteNode(DataRow row, StringBuilder sb) {
    sb.Append("<li>"); 
    sb.Append(row["Name"]);

    // find children rows...
    DataRow[] children = row.Table.Select("parentId = " + row["id"].ToString());
        if (children.Length > 0)
        {
            sb.Append("<ul>");
            foreach (DataRow child in children)
            {
                WriteNode(child, sb);
            }
            sb.Append("</ul>");
        }

        sb.Append("</li>");
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以层次结构显示非标准化数据? 的相关文章

  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • Qt-Qlist 检查包含自定义类

    有没有办法覆盖加载自定义类的 Qt QList 的比较机制 即在 java 中你只需要重写一个比较方法 我有一个带有我的自定义类模型的 QList QList
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 指针问题(仅在发布版本中)

    不确定如何描述这一点 但我在这里 由于某种原因 当尝试创建我的游戏的发布版本进行测试时 它的敌人创建方面不起作用 Enemies e level1 3 e level1 0 Enemies sdlLib 500 2 3 128 250 32
  • 如何返回 json 结果并将 unicode 字符转义为 \u1234

    我正在实现一个返回 json 结果的方法 例如 public JsonResult MethodName Guid key var result ApiHelper GetData key Data is stored in db as v
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 在同一查询中选择 Count of ip 和 Count of DISTINCT ip

    我有一个这样的表结构 TABLE NAME counter id datetime url ip 1 2013 04 12 13 27 09 url1 ip01 2 2013 04 13 10 55 43 url2 ip02 3 2013
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐

  • 在 C# 中将大数组与常量相乘/相加的高性能方法是什么?

    我有一个结构 类 在数组中保存大量数字 浮点数 双精度数 整数 字节 现在我想要有非常高性能的方法来在此数组上应用一些原始操作 加 减 除 乘一个常量 该数组位于一块连续的内存上 因此例如为了复制它 我使用 Buffer BlockCopy
  • 将位图和 Png 图像转换为文本的简单方法,反之亦然

    将位图和 Png 转换为字符串并再次转换的最简单方法是什么 我一直在尝试通过内存流等进行一些保存 但我似乎无法让它工作 看来我没说清楚 我想要的是能够将 Bitmap 类 其中包含图像 转换为系统字符串 从那里我希望能够将我的字符串放置一会
  • 多媒体按键的 Java 接口

    有人有在 Java 中与多媒体 或 Fn 功能 键交互的经验吗 关于 Java 中的多媒体按钮似乎有一个不完整的讨论here 还有一个图书馆 JIntelliType 可用于在Windows中注册全局热键 但仅适用于全局注册 不适用于媒体键
  • C 中的 UDP 套接字

    我正在解决课堂作业问题 我想启动一个 UDP 服务器来侦听文件请求 它打开文件并使用 UDP 将其发送回请求客户端 这是服务器代码 Create UDP Socket if sockfd socket AF INET SOCK DGRAM
  • VB.NET - 鼠标坐标

    我有一个 vb net 应用程序 我想知道如何在窗体上单击鼠标时找到指针 鼠标 的坐标 没什么可说的 所以我就这样吧 D Thanks 将鼠标坐标放入文本框中的非常简单的代码 Private Sub Form1 MouseClick ByV
  • 使用 PTVS、IronPython 和 MongoDB

    我想使用 PTVS Visual Studio 的 Python 工具 开发一个应用程序 我下载了 PTVS 插件和 IronPython for Visual Studio 2012 它运行得很好 我的问题是 我可以将 MongoDB 与
  • 为什么弹性项目不会缩小到超过内容大小?

    我有 4 个 Flexbox 列 一切正常 但是当我向列添加一些文本并将其设置为大字体大小时 由于 Flex 属性 它使列比应有的宽度更宽 我尝试使用word break break word它很有帮助 但是当我将列的大小调整到非常小的宽度
  • JsonArray.Parse(...) 错误

    我正在开发一个适用于 Windows 8 的新闻应用程序 使用 C XAML 不幸的是 我在下载 JSON Feed 后遇到了一个奇怪的错误 通过验证 http jsonlint com 异步 下载成功 然后我想解析结果 var items
  • Oracle 如何列出两个日期之间的月份的最后几天

    我设法获取两个日期之间的所有天数 但我想获取两个日期之间几个月的所有最后一天 使用一个请求 2 个日期之间的所有日期 select to date 01 01 2000 dd mm yyyy LEVEL 1 as jour from dua
  • Ruby:根据整数数组对对象数组进行排序

    这看起来相当简单 之前就应该问过 但我在 Stack Overflow 上找到的所有内容似乎都不起作用 我有一个包含 4 个对象的数组 我想按特定顺序对其进行重新排序 所以 它看起来像这样 array Obj1 Obj2 Obj3 Obj4
  • 从 android studio 打开项目文件夹?

    我知道这是一个微不足道的功能 但是 Android Studio 中是否有一个选项可以将项目文件夹打开到文件资源管理器 来自 AS 附注 始终可以按照 AS 窗口标题上显示的路径导航到项目文件夹 You can press ShiftShi
  • 嵌套参考字段

    为了检索设备类型 我使用一个将检索设备模型 然后使用另一个使用设备模型的字段 typeID 引用设备类型来检索设备类型 但它显示以下警告 警告 失败的道具类型 无效的道具翻译类型选择 提供给 ReferenceField 的布尔值 预期函数
  • 使用 asyncio 时,如何在关闭事件循环之前允许所有正在运行的任务完成

    我有以下代码 asyncio coroutine def do something periodically while True asyncio async my expensive operation yield from asynci
  • 如何在Python中打印三角形?

    我想做一个打印三角形的函数 如下图所示 用户可以插入三角形的行号 第一行的总长度必须是奇数 我尝试使用下面的代码 def triangle n k 2 n 2 for i in range 0 n for j in range 0 k pr
  • 如何在 datagridview 列中动态显示数字计时器(秒表)c#?

    我有datagridview 其数据源是datatable 我在 datagridview 有两列 及时命名 加载 datagridview 后 我想添加一个名为 DURATION 的新列 它是一个计时器列 即基于 IN TIME DURA
  • 如何使用 Pandas apply() 函数对 API 进行异步调用

    我有大约 14 000 行数据框 并尝试通过调用 API 将一些数据填充到新列中 下面的代码检索预期的响应 但是 似乎每次迭代都等待响应进入下一行 这是函数 def market sector des isin isin isin isin
  • Java解析字符串到日期[重复]

    这个问题在这里已经有答案了 我正在尝试在 Java 中解析字符串以获取日期对象 我的字符串是 String date 2013 04 13 21 00 00 代码是 String myFormatString yyyy mm dd hh m
  • “else”错误之前预期的主要表达式[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我得到了expected primary expres
  • Javascript根据另一个下拉框值更改下拉框选项[重复]

    这个问题在这里已经有答案了 我正在练习 JavaScript 编程 我发现了一个问题 必须由一些专家来回答drop down boxes 场景是 我有一个drop down框提供了省份的一些可能选项以及第二个选项 城镇 该选项仅取决于省份中
  • 如何以层次结构显示非标准化数据?

    我的问题是我想以层次结构显示数据 如下所示 Democrat County Clerk 候选人1 候选人2 Magistrate 候选人1 候选人2 候选人3 但我正在检索这样的数据集 Party Office Candidate Demo