我需要在我们的 SharePoint 应用程序中创建一些功能,用一些简单的分层数据填充一个或多个列表。每个父记录将代表一个“提交”,每个子记录将是一个“提交项”。提交和提交项目之间存在 1 对 n 的关系。这在 SharePoint 中实用吗?到目前为止,我所做的唯一类型的列表关系是查找列,但这似乎有点不同。此外,一旦建立了这样的列表关系,那么在这种数据上创建视图的最佳方式是什么。我几乎确信将这些内容写入外部数据库会更容易,但我想试一试 SharePoint 以利用自动搜索功能。
8 回答
如果不自己开发,Sharepoint 中的正确父/子几乎是不可能的。这里有一种方法:Simulate Parent / Child relationship in SharePoint 2007 with Folders & Content Types
(注意:这涉及 SharePoint 2007。在 2010 年,联接使这变得更容易)
在单独的数据库中执行此操作,创建一个页面,其中包含显示数据的控件并对其运行搜索。虽然失去了相当多的 SharePoint 功能。
否则,创建一个允许您在其他列表中查找数据的自定义字段控件可能没问题。自定义字段控件可以是“查看”相关数据的控件。我知道我们已经为同一列表上的页面之间的父子关系做了它。虽然不是一对一。
无论哪种方式都是艰难的选择。
我的投票是“将这些东西写入外部数据库”
您在 Sharepoint 中遗漏了很多东西,例如事务支持、参照完整性、简单的更新方式(比较 SQL)、报告(使用 Reporting Services 和 SQL 数据库)……将 sharepoint 视为存储文档和简单列表的一种方式。 ……
Sharepoint 的论点是如果它是一个小型应用程序,对事务的支持没有要求,不需要导入外部数据等......
当人们说 Sharepoint 是一个开发平台时,需要定义他们认为开发平台是什么。
有关 Sharepoint 2010 的最新传言告诉我们,下一个版本将支持基于 SQL 服务器的列表......我认为这至少会使 Sharepoint 朝着正确的方向发展......
看看 SLAM,SharePoint 列表关联管理器,这是我公司创建并积极支持的开源项目。SLAM 允许您将 SharePoint 数据同步到 SQL,包括列表之间的任何关系。SLAM 除了本身非常有用之外,它实际上是一个框架,旨在允许开发人员使用我们所谓的 SLAM 类型配置文件创建自己的复杂数据关联。我们有一个开箱即用的类型配置文件,它是开源项目的一部分,它实际上允许您使用嵌套集模型使 SharePoint 列表分层。有关更多信息,请参阅我们的 codeplex 网站上的此页面。
使用连接的 Web 部件很容易做到。
创建两个列表:
父级(Id、Title) 子级(Id、Title、ParentId)
创建一个新的sharepoint页面,为Child添加DataFormWebPart(显示Parent)和另一个,将它们都设置为基于QueryString参数过滤(使用该参数过滤Parent.Id和Child.ParentId)瞧,您可以显示父- 孩子的关系。现在,添加孩子更加困难,这是我还没有解决的部分。
我经常使用sharepoint,使用称为AAA(Activity,Assignment,Artifact)的框架,它允许您使用查找列将分配或工件链接到父Activity。然后,您使用连接的 Web 部件构建一个 Web 部件页面,允许您按活动过滤所有分配和工件。例如,单击提交 Web 部件中提交的旁边,将显示附加到该提交的所有提交项。效果很好。
您可以使用的另一种方法是将 XML 与项目中的字段保持一致。这是 Podcasting Kit(在 CodePlex 上)用来存储评分等内容的方法。
一种可能的方法是创建基于文件夹内容类型的提交内容类型和基于项目内容类型的提交项目。然后,您可以像在文件系统中一样分层存储数据,并且还可以使用默认视图和搜索功能。
另一种方法是创建指向相同列表的查找字段(list=”self”)。该字段将用作对父项的引用,您将获得包含递归相关数据的列表。以编程方式使用这些数据是可以的,但使用视图功能会有点复杂。