如何在SharePoint中创建子列表

7
有没有可能在SharePoint中创建子列表?我目前正在使用文件夹来组织我的内容,但是当以编程方式访问它们时,文件夹在SharePoint中是一个完全不同的概念。
我想要实现类似这样的效果:
-web
----List A
---------Sub List 1
---------Sub List 2
----List B
---------Sub List 1
---------Sub List 2
编辑1:
我正在尝试在Web下方直接创建可排序的列表。目前,我通过创建具有自定义SortOrder列和标题的自定义文件夹来实现此目的。文件夹的标题最终将成为公共站点上的部分标题,每个文件夹内的项将成为该部分下面的内容。是否有更好的方法来完成这个看起来相当琐碎的事情?
感谢您的帮助。
编辑2(回复Jason):
我们想要保持内容的组织。假设我们有一个公司领导力列表。在这个列表中,我们有主席、CEO、董事文件夹。然后,在每个文件夹中都有项目(人员)。是否有更好的方法来组织这些?

元数据导航!不幸的是,看来我发现这篇文章太晚了。 - Anurag
值得注意的是,在Sharepoint 2010中,您可以在列表中创建文件夹,因此您可以非常容易地创建这种层次结构。我曾尝试过做同样的事情,发现了这个答案,但对提供的答案感到失望,但进一步的调查让我发现了列表内的文件夹。 - Craig Stevensson
7个回答

8
具体而言,不行。在SharePoint中无法嵌套列表。
但是,有许多方法可以让最终用户看起来非常相似。有两个选项:
第一种选择是分组。包括您想要按其分组的列(例如,对于包含城市名称的列表,您可能希望按州或国家进行分组 - 或两者都),然后设置一个视图以按该(或那些)列进行分组。
第二种方式是在同一站点内使用两个单独的列表,并使用查找列类型将一个链接到另一个(例如,您创建一个列表以保存国家列表,一个列表以保存州列表,并且第三个列表以包括状态和国家的查找列的城市列表)。您只能有一级查找,因此例如,在状态列表上具有国家的查找列,然后将状态列表链接到城市列表并显示城市所在的国家是不行的;您可以很好地显示状态(如果在状态列表上创建一个计算列以显示“州,国家”,则可以在城市列表中显示结果),但仅限于此。

如果您是通过编程方式进行管理,则查找字段可以跨站点边界,而这正是OP明确表示的。但并非完全准确。 - Jason
第一个选项:分组可以在字段上提供多级,而不是所有列表项都嵌套在彼此内 - 第二个选项也是两级而不是多级...我在谷歌上搜索了多级,现在在这里。 - saber tabatabaee yazdi
@sabertabatabaeeyazdi,你说得对,这就是为什么我说“不行。在SharePoint中无法嵌套列表。”此外,我的(2009年写的)答案仅涉及MS Office SharePoint Server 2007(MOSS);我没有任何关于更近期版本的经验。 - Calrion
@Calrion 谢谢你,但今天当我想通过编程实现它时,我想让SharePoint作为我的数据库为我工作,并使用c#(DOTNET)制作Windows或Web表单进行数据输入,并通过Crystal Report或Reporting Services生成报告...这可能吗? - saber tabatabaee yazdi

1
您不能在SharePoint中拥有子列表,但如果您的所有列表都将具有相同的元数据,则可以在文档库中使用文件夹。文档库只是一个用于存储文档的列表。您可以在其中放置子文件夹等内容。
话虽如此,我认为这里看到的很多反对意见是因为“子列表”的想法并没有真正体现出SharePoint的真正优势,即您正在使用像SQL这样的关系数据库。理想情况下,您不应该考虑“子列表”本身。我认为您真正需要考虑的是列表的不同视图,它本质上是一个数据库表。只需过滤掉每个特定视图中所需和不需要的项目,就可以让最终用户看到自己的数据。然后,您可以通过调用这些视图来进行编程访问。
SPView view = yourList.Views["View Name"];
SPListItemCollection items = list.GetItems(view);

1

SharePoint 2007没有继承的列表嵌套支持,但是...

在给定的SP2007网站集合中,你可以有多个站点(实际上是网站),站点(实际上是网站)可以有子站点(实际上是子网站)。这可以用来模拟上面的“列表嵌套”。这种方法可能不是理想的,但如果所有站点(实际上是网站)都在同一个网站集合中(不要与站点混淆),并且只用于某些任务,那么处理起来也不太难。在这种情况下,示例如下:

-网站集合
----网站A
---------子列表1
---------子列表2
---------网站C(为什么不呢?)
----网站B
---------子列表1
---------子列表2

1
这是一个需要子列表的示例(我的问题 :))。 我正在收集我们部门各种课程的教科书信息。 我只需要课程信息一次,然后是与该课程相关的每本书的信息:
GER 555,教科书标题,POC(讲师)信息等      教材名称,ISBN,VER,作者等      教材名称,ISBN,VER,作者等      教材名称,ISBN,VER,作者等
有些课程有多达8本书,要求教练每次都填写一张表格很繁琐。

0

我已经成功在自定义列表中创建了文档集(SharePoint 2010)。这有点偶然,我不确定这样做是否明智(很乐意听取建议)。

我想通过“组织”对列表进行分区,并且我想为每个组织创建一个会议纪要文档集,其中包含每个相应组织的会议纪要。我使用的步骤:

  • 基于列表项创建会议纪要内容类型
  • 基于文档集创建会议纪要文档集内容类型
  • 创建会议纪要自定义列表
  • 将会议纪要和会议纪要文档集添加为内容类型
  • 从列表中删除文档作为内容类型

现在我可以在列表中创建会议纪要文档集,并将会议纪要列表项添加到这些文档集中 - 前提是我使用 PowerShell 创建文档集,因为当我尝试使用浏览器创建时,SharePoint 告诉我无法创建(这很奇怪,因为曾经我确实使用浏览器创建过文档集,但在某个地方它停止工作了)。

访问文档时,它不会显示文档集视图。该视图专门用于库,如果您尝试将其用于在列表中显示文档集的内容,SharePoint 将会抱怨。

正如我上面提到的,这是一种意外情况,因为我不知道你不应该能够这样做。使用需谨慎。


0

在SharePoint中没有子列表的概念。您可以尝试使用查找字段来实现所需的效果。

您能否告诉我们更多关于您想要完成什么的信息?

为什么您需要子列表呢?为什么不为您想要在公共网站上显示的每个内容区域创建单独的列表呢?


更新:

我能想到几种不同的方法:

  1. 在列表中添加一个选择字段,对每个人进行分类。您将能够创建视图来过滤列表中的项目,并创建CAML查询以编程方式选择您感兴趣的项目。您应该能够轻松地将列表分段以在公共页面上显示。

  2. 如果这些是职位头衔,它们可以存储在AD中,并通过配置文件导入功能带入SharePoint。然后,您可以开发Web部件(可能已经存在一个),以显示具有特定配置文件属性的用户(在本例中为“标题”)


杰森是正确的,最好的方式是在列表上使用“选择”列来指定类别,然后基于此进行筛选。对于MD、CEO等,您可以允许该列为空,或者使用CAML不显示输入值。 - Calrion

0

我认为真正的问题在于“子列表”。如果它是“列表中的列表”,那么我认为它是无法访问的。至少就我所知。

如果你只是想要链接不同站点或文件夹中的两个列表,只要它们在同一站点集合下,就可以完成。(如果我轻松阅读了你的帖子,那么抱歉!请暂停阅读!)有几种方法:

  1. 看看这篇文章
  2. Sharepoint List CollectionSharepoint Cascaded Lookup这样的工具可能是你的理想方式。问题是它们大多通过数据视图操作。

希望能帮到你 PS. 这是一个好问题!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接