Найти документ в Sharepoint - PullRequest
2 голосов
/ 17 января 2012

Ищете способ найти документ, зарегистрированный в 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)); 

Но нужно ли мне повторять весь список, если я не знаю, в каком списке документ зарегистрирован или есть более эффективный способ.

Ответы [ 2 ]

1 голос
/ 17 января 2012

Если 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"];

Затем вы можете загрузить SPFile (документ) с SPWeb.GetFile(string).Если вам нужен SPListItem, вы можете получить к нему доступ через SPFile.Item.

0 голосов
/ 17 января 2012

Если вы не знаете, в какой список помещен документ, вам нужно будет выполнить перебор доступных объектов SPList из SPWeb.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...