我有这些表 Pages
、PageVersions
和 ElementsOnPageVersions
。
我想在一个页面上以可折叠的 View 一次显示它。
像这样:
第 1 页
- 版本 1
- 版本 2
- 版本 3
- 版本 4
- 元素 1
- 元素 2
- 元素 3
第 2 页
- 版本 1
- 版本 2
- 版本 3
- 版本 4
- 元素 1
- 元素 2
第 3 页
- 版本 1
- 元素 1
- 版本 1
第 4 页
- 版本 1
- 元素 1
- 版本 1
我不确定检索数据并在折叠布局中轻松显示数据的最佳方式是什么。
我会做这样的事情:
- 一次获取所有项目。 "select * from ElementsOnPageVersion e inner join PageVersions v on e.PageVersion = v.id inner join Pages p on v.PageId = p.id"
- 遍历所有,并构建排序列表的层次结构,使其看起来像折叠布局。 PageLists[PagesObject],PagesObject 有一个经过排序的 PageVersionObjects 列表,它有一个经过排序的 ElementObjects 列表。
- 遍历最终的 PagesList 列表构建页面。在此迭代 pageversionslist 中显示页面的版本,并再次在每个版本中迭代 elementslist。
此时此刻,这就是我要做的方式。但它似乎太重了,而且迭代很多。
执行此操作的最佳方法是什么?
最佳答案
我会考虑将您的三个不同项目投影到一个自引用列表中。每个项目都需要一个 Id、Description 和 ParentId。我会为此制作一个 View 模型。
public class TreeItem {
public int Id {get; set;}
public string Description {get; set;}
public int ParentId {get; set;}
}
如果您使用的是 MVC,这将允许您利用网络表单中的 asp:TreeView 或任何风格的 jQuery 树/ TreeView 。
关于c# - 嵌套 View 中的 3 级列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20538481/