【发布时间】:2009-08-17 05:54:19
【问题描述】:
在 sharepoint 中,我如何访问具有特定名称的站点的所有列表,例如:
SPList list= web.Lists["MyList"]
我会在根目录下获取它,但我如何才能在子站点中访问所有具有该名称的它们。
【问题讨论】:
标签: c# sharepoint
在 sharepoint 中,我如何访问具有特定名称的站点的所有列表,例如:
SPList list= web.Lists["MyList"]
我会在根目录下获取它,但我如何才能在子站点中访问所有具有该名称的它们。
【问题讨论】:
标签: c# sharepoint
不建议遍历 SPWeb,它可能必须递归地发生(子站点的子站点的子站点等),这使得很容易引入 Dispose 错误,即忘记处置 SPWeb 对象。
您是否需要这些列表才能访问其中的项目?如果它们都具有相同类型的项目,我建议您使用 SPSiteDataQuery 类,该类接受 CAML 查询并对网站集中的所有内容进行查询。您可以使用生成的 DataTable 来显示数据
编辑: 另一种选择是 FullTextSqlQuery(如果您使用的是 MOSS,而不是 WSS),它使用 SSP 的搜索(索引)。通过在 SSP 中添加映射属性(将站点列作为搜索属性),您可以直接与 SSP 搜索对话,语法类似于 SQL
【讨论】:
您必须遍历网站/网站集的所有子网站,并查看该网站中是否有一个名为 MyList 的列表。 SPWeb.webs 属性可以获取站点下的所有站点。
编辑
这样做的原因是 SharePoint 中的网站是独立的,因此您无法访问其他网站或网站集中的资源,除非先访问该网站或网站集。
因此,要执行诸如提取分配给用户的所有任务之类的操作,您需要加载每个网站集中的每个网站并检查任务列表以查看它是否有该用户的任务。您可以read this 更好地了解网站集的工作原理。网站功能类似,但存储在与根网站集相同的竞争数据库中。
编辑 2
或者正如此处的 cmets 中所指出的,您可以在网站集上运行 SPSiteDataQuery,以便迭代您只需要跨网站集进行迭代的所有内容。
【讨论】: