在sharepoint中,我如何访问具有特定名称的网站的所有列表,例如:
SPList list= web.Lists["MyList"]
会在根目录下找到我,但是如何在子网站中访问所有具有该名称的人。
答案 0 :(得分:4)
通过SPWebs迭代是不可取的,它可能必须递归地发生(子网站的子网站的子网站等),这使得很容易引入Dispose错误,即忘记处理SPWeb对象。
您是否需要列表以便访问其中的项目?如果它们都具有相同类型的项目,我建议您使用SPSiteDataQuery类,该类接受CAML查询并对网站集中的所有内容进行查询。您可以使用生成的DataTable显示数据
编辑:另一种选择是FullTextSqlQuery(如果您使用的是MOSS,而不是WSS),它使用SSP的搜索(索引)。通过在SSP中添加映射属性(意味着sitecolumns作为搜索属性),您可以直接与SSP搜索对话,语法类似于SQL
答案 1 :(得分:3)
您必须遍历网站/网站集的所有子网站,并查看该网站是否有一个名为MyList的列表。 SPWeb.webs属性可以获取网站下的所有网站。
修改强>
原因是SharePoint中的网站是独立的,因此您无法在未首先访问该网站或网站集的情况下访问其他网站或网站集中的资源。
因此,要执行诸如提取分配给用户的所有任务之类的操作,您需要加载每个网站集中的每个网站并检查任务列表以查看它是否具有该用户的任务。您可以read this更好地了解网站集的工作原理。站点功能类似,但存储在与根网站集相同的竞争数据库中。
修改2
或者正如此处的评论所指出的那样,您可以在网站集上运行SPSiteDataQuery,以便迭代您只需跨网站集迭代的所有内容。