【问题标题】:Converting sql to Treeview JSON with C#使用 C# 将 sql 转换为 Treeview JSON
【发布时间】:2018-04-04 10:11:50
【问题描述】:

我有一个存储过程来获取这个表。我想这样格式化:

              data: [
                    { text: "Furniture", items: [
                        { text: "Tables & Chairs" },
                        { text: "Sofas" },
                        { text: "Occasional Furniture" }
                    ] },
                    { text: "Decor", items: [
                        { text: "Bed Linen" },
                        { text: "Curtains & Blinds" },
                        { text: "Carpets" }
                    ]

使用我的存储过程将其转换为 JSON 时遇到问题。使用 angularjs 在 kendo-tree-view 中输出。

【问题讨论】:

  • 您需要使用存储过程从数据库中获取记录并在javascript中编写代码以将该记录转换为树状结构。

标签: c# sql angularjs json treeview


【解决方案1】:

假设这更多地与如何将数据库结果转换为树视图的结构而不是绑定数据有关,这有望成为回答问题的一部分。如果没有,那么我将删除它或修改它。 (我不得不根据有限的信息做出一些假设)

这一切都取决于您如何通过存储过程获取数据。您是否使用 ORM,例如EF 或 Dapper 或标准 SqlClient 连接/命令或访问此数据的其他方法。

所以假设你有一个类似这样的模型:

public class treeviewItems
{
      public int id {get;set;}
      public int parentid {get;set;}
      public string text {get;set;}
      public List<treeviewItems> items {get;set;}
      public treeviewItems()
      {
        items = new List<treeviewItems>();
      }


}

现在我们已经有了模型,我们需要将数据转换为以这种形式获取数据的方式。例如。您的Json 示例。

如果我们将行作为平线,我们将需要遍历行并填充集合,例如IList&lt;treeviewItems&gt;

如果使用 Dapper,您总是可以像这样映射子项目:

var model = Context.Query<treeviewItems,treeviewItems,treeviewItems>(
`sql statement here`, 
(parent, child) => parent.items = child;return parent;},
new { `sql parameters if needed`}).ToList();

如果使用此方法,重要的是列名称与属性名称匹配并且顺序正确,否则映射可能会有点疯狂。

所以列顺序将是先父项,然后是子项。

例如:

id, parentid, text ==> From your top grouping table 
IDGROUP, 0, GROUP ==> based from your example table 

id, parentid, text ==> From you items table 
IDITEM, IDGROUP, ITEM ==> based from your example table

显然,您可以根据需要对信息进行切片和切块。 这应该会给你数据是right 结构,以便能够呈现回你的树视图。

如果您使用的是 ORM/SqlClient,那么您应该能够使用 LINQ 将数据操作到此结构中来获得相同的结果

【讨论】:

  • 嗨@David,谢谢你,它给了我关于流程的想法。我在 youtube 中找到了适用于我的情况的最简单的答案。我重新格式化了我的查询,所以我可以将父级用作 NULL。生病发布答案。干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 2017-01-06
  • 2020-10-27
  • 1970-01-01
  • 2017-03-19
  • 1970-01-01
  • 2022-09-27
相关资源
最近更新 更多