从sharepoint列表创建分层下拉列表

时间:2011-04-26 23:51:54

标签: c# .net sharepoint sharepoint-2007

我正在尝试从以下形式的SharePoint列表中获取数据:
ID,Title,Parent_ID,其他一些不重要的东西。

1, GroupA, null  
2, GroupB, null  
3, GroupC, null  
4, ASubA, 1  
5, ASubB, 1  
6, BSubA, 2  
7, CSubA, 3  
8, CSubB, 3  
9, CSubC, 3

我想将其干净地翻译成webpart上的下拉列表,如下所示:

  

显示全部
  A组
  ASubA
  ASubB
  B族
  BSubA
  C组
  CSubA
  CSubB
  CSubC

我可以将它与一些递归和一些DataTable合并放在一起,但是对于下一个出现的人来说,它会让人感到困惑和难以维护。我正在寻找一种顺利实现这一目标的方法。我觉得我应该能够通过CAML查询中的一些GroupBy实现这一点,但是我没有在SharePoint上做太长时间。

是否有一些分层数据结构我可以将其全部插入,然后按顺序将其拉出来?或者我没想到的一些查询语法?

提前致谢。

3 个答案:

答案 0 :(得分:0)

为什么不使用Group_ID而不是Parent_ID:

1,GroupA,1
2,GroupB,2
3,GroupC,3
4,ASUBA,1
5,ASUBB,1
6,BSubA,2
7,CSubA,3
8,CSubB,3
9,CSubC,3

您现在可以在查询中按Group_ID排序。

或者,您可以使用两个列表,一个用于组,另一个用于具有查阅列的subs。

答案 1 :(得分:0)

您使用的是哪个版本的SharePoint?如果您使用的是SharePoint 2010,而不是创建自己的SharePoint 2010,我建议您使用Managed Metadata

  

托管元数据是您可以定义的集中管理术语的分层集合,然后将其用作Microsoft SharePoint Server 2010中项目的属性。

答案 2 :(得分:0)

另一个想法:合并第3列和第1列,并按结果值进行排序 GroupA,1
ASUBA,14
ASUBB,15
GroupB,2
BSubA,26
GroupC,3
CSubA,37
CSubB,38
CSubC,39
(按字母顺序排序数字)

当然,如果您有更长的列表,则需要插入一些零。