【问题标题】:sharepoint access all lists of a certain namesharepoint 访问某个名称的所有列表
【发布时间】:2009-08-17 05:54:19
【问题描述】:

在 sharepoint 中,我如何访问具有特定名称的站点的所有列表,例如:

SPList list= web.Lists["MyList"]

我会在根目录下获取它,但我如何才能在子站点中访问所有具有该名称的它们。

【问题讨论】:

    标签: c# sharepoint


    【解决方案1】:

    不建议遍历 SPWeb,它可能必须递归地发生(子站点的子站点的子站点等),这使得很容易引入 Dispose 错误,即忘记处置 SPWeb 对象。

    您是否需要这些列表才能访问其中的项目?如果它们都具有相同类型的项目,我建议您使用 SPSiteDataQuery 类,该类接受 CAML 查询并对网站集中的所有内容进行查询。您可以使用生成的 DataTable 来显示数据

    编辑: 另一种选择是 FullTextSqlQuery(如果您使用的是 MOSS,而不是 WSS),它使用 SSP 的搜索(索引)。通过在 SSP 中添加映射属性(将站点列作为搜索属性),您可以直接与 SSP 搜索对话,语法类似于 SQL

    【讨论】:

      【解决方案2】:

      您必须遍历网站/网站集的所有子网站,并查看该网站中是否有一个名为 MyList 的列表。 SPWeb.webs 属性可以获取站点下的所有站点。

      编辑

      这样做的原因是 SharePoint 中的网站是独立的,因此您无法访问其他网站或网站集中的资源,除非先访问该网站或网站集。

      因此,要执行诸如提取分配给用户的所有任务之类的操作,您需要加载每个网站集中的每个网站并检查任务列表以查看它是否有该用户的任务。您可以read this 更好地了解网站集的工作原理。网站功能类似,但存储在与根网站集相同的竞争数据库中。

      编辑 2

      或者正如此处的 cmets 中所指出的,您可以在网站集上运行 SPSiteDataQuery,以便迭代您只需要跨网站集进行迭代的所有内容。

      【讨论】:

      • 当然,我已经添加了更多关于网站和网站集如何工作的内容。您也可以四处搜索以更好地了解它们之间的障碍是如何运作的。
      • 这是不正确的,使用 SPSiteDataQuery 类您可以获得整个网站集中用户的所有任务。
      • 我不知道。如果您在整个场中搜索相同的列表,您仍然必须打开每个网站集,然后在其上运行 SPSiteDataQuery。这仍然是打开网站集中的每个网站的一大进步。
      • 是的,它是 SiteCollection 绑定的,SPSiteDataQuery 需要一些属性,如 BaseType 等用于列表、CAML 查询和范围,可以设置 SiteCollection。另一种方法是 FullTextSqlQuery,它使用 SSP 的搜索(索引)。通过在 SSP 中添加映射属性(将站点列作为搜索属性),您可以直接与 SSP 搜索对话,语法类似于 SQL
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 2018-01-28
      相关资源
      最近更新 更多