Mik*_*ott 5 c# asp.net dynamic-data
我正在进入动态数据站点(非常强大)并享受它.但是,我要求我似乎无法满足.我有一个自联接类别表(Id,Name,ParentId)来创建一个分层类别结构(例如,具有空id的类别是顶级的,通常的类型).然后我有一个产品表,其中包含该类别的外键.
在动态数据站点中,我自动生成了类别下拉列表; 但它只是按数字顺序列出所有类别.我想要的(以及我之前编码的,动态前数据)是一个缩进列表,按层次排列的类别列表.
我是否更换现有的FilterUserControl?我可以在任何地方覆盖PopulateListControl方法吗?有没有人有任何LINQ语法来提取自连接的分层数据?
只需指点和建议,谢谢你提供的任何帮助.
亲切的问候,
迈克金斯科特
在甲骨文中:
SELECT LEVEL, Id, Name, LPAD(' ', LEVEL) || Name AS IndentedName
FROM Categories
START WITH
ParentID IS NULL
CONNECT BY
ParentID = PRIOR Id
ORDER SIBLINGS BY
Name
Run Code Online (Sandbox Code Playgroud)
您可以使用IndentedName或基于LEVEL伪列自定义格式(它显示每个类别的深度)
PS 这是一个bad用作NULL顶级父 ID 的想法,因为您无法使用索引来访问它。使用 a0代替。
更新:
在SQL Server:
WITH q (id, parentid, name, level, bc) AS
(
SELECT id, parentid, name, 1, CAST(ROW_NUMBER() OVER (ORDER BY name) AS VARCHAR(MAX))
FROM Categories
WHERE ParentID IS NULL
UNION ALL
SELECT c.id, c.parentid, c.name, q.level + 1, q.bc + '.' + CAST(ROW_NUMBER() OVER (ORDER BY c.name) AS VARCHAR(MAX))
FROM q
JOIN Categories c
ON c.parentId = q.id
)
SELECT *
FROM q
ORDER BY
bc
Run Code Online (Sandbox Code Playgroud)
与 不同的是Oracle,SQL Server索引NULL值,因此可以使用 aNULL来标记最终祖先。
| 归档时间: |
|
| 查看次数: |
2014 次 |
| 最近记录: |