在Sharepoint中查找文档

在Sharepoint中查找文档,sharepoint,Sharepoint,正在寻找查找在Sharepoint中注册的文档的方法。我可以通过以下代码在文档库或列表中找到文档 SPSite oSPSite = new SPSite(_serverUrl); SPWeb oSPWeb = oSPSite.OpenWeb(); SPList oSPList; SPListItemCollection oSPListItemCollection; oSPList = oSPWeb.Lists["Listname"]; SPListItem listItem = null; li

正在寻找查找在Sharepoint中注册的文档的方法。我可以通过以下代码在文档库或列表中找到文档

SPSite oSPSite = new SPSite(_serverUrl);
SPWeb oSPWeb = oSPSite.OpenWeb();
SPList oSPList;
SPListItemCollection oSPListItemCollection;
oSPList = oSPWeb.Lists["Listname"];
SPListItem listItem = null;
listItem = oSPList.GetItemByUniqueId(new Guid(spGuid)); 

但是,如果我不知道文档在哪个列表中注册,或者是否有更有效的方法,我是否需要通过所有列表进行迭代。

如果您不知道文档放在哪个列表中,则需要迭代SPWeb中可用的SPList对象。

如果UniqueId是您仅有的信息,则必须创建一个
SPSiteDataQuery
要检索文档的URL:

SPWeb web = // ...

SPSiteDataQuery q = new SPSiteDataQuery();            
q.Query = String.Format(
            "<Where><Eq><FieldRef Name='UniqueId' /><Value Type='Lookup'>{0}</Value></Eq></Where>", 
             spGuid);
q.Lists = "<Lists BaseType="1" />";  // restrict to document libraries   
q.RowLimit = 1;
// q.Webs = "<Webs Scope='SiteCollection' />"; add to broaden the search on the whole site collection
q.ViewFields = "<FieldRef Name='EncodedAbsUrl' />";

DataTable tbl = web.GetSiteData(q);

if (tbl.Rows.Count == 0) throw new FileNotFoundException(...);

return tbl.Rows[0]["EncodedAbsUrl"];
SPWeb=/。。。
SPSiteDataQuery q=新的SPSiteDataQuery();
q、 Query=String.Format(
"{0}", 
spGuid);
q、 列表=”;//仅限于文档库
q、 行限制=1;
//q.Webs=“”;添加以扩大对整个网站集的搜索范围
q、 视场=”;
DataTable tbl=web.GetSiteData(q);
如果(tbl.Rows.Count==0)抛出新的FileNotFoundException(…);
返回tbl.Rows[0][“EncodedAbsUrl”];

然后可以使用
SPWeb.GetFile(string)
加载
SPFile
(文档)。如果您只需要
SPListItem
,您可以通过
SPFile.Item

访问此文档,您知道文档的URL吗?谢谢您的回答。我想我找到了解决办法。若我知道文档的guid,我可以做……fileItem=oSPWeb.GetFile(新guid(spGuid));如果spGuid是字符串guidYeah,那么如果您有guid:),那么这将是一个更好的解决方案。您应该看看这个奇妙的特性