Как быстро найти библиотеку документов sharepoint по id? - PullRequest
2 голосов
/ 18 ноября 2009

Учитывая SPList.ID и семейство сайтов (или SPWeb с вложенными веб-сайтами), как мне быстро найти библиотеку документов с заданным идентификатором?

Я могу рекурсивно перечислять все веб-сайты и создавать веб-сайты. Списки [guid] для каждого из них, но в моем случае могут быть тысячи дочерних веб-страниц, и я ищу решение в реальном времени.

Если нет способа сделать это быстро, есть ли другие предложения о том, как однозначно идентифицировать библиотеку документов? Я мог бы сохранить полный путь (url), но идентификация будет общедоступна, и я не чувствую себя очень комфортно, отдавая нашу точную структуру документа SharePoint таким образом. Стоит ли прибегать к ведению ручного отображения библиотеки идентификаторов <-> в отдельном списке?

Ответы [ 4 ]

3 голосов
/ 18 ноября 2009

Я голосую за соответствие идентификатора вручную -> пары URL-адресов в хорошо известном списке верхнего уровня, который виден только учетной записи с повышенными привилегиями.

1 голос
/ 19 ноября 2009

Поскольку вы храните ListID где-то, вы также можете сохранить WebId. Списки открываются контекстом SPWeb всегда, поэтому, если вы перейдете на:

http://toplevel/_layouts/ListGeneralSettings.aspx?ID={GUID1} // OK
http://toplevel/sub1/_layouts/ListGeneralSettings.aspx?ID={GUID1} // Wont Work (same Guid)

Имея WebId и ListId, вы можете просто:

using(SPWeb subweb = (new SPSite("http://url")).OpenWeb(new Guid("{000...}")))
{
    SPList list = subweb.Lists.GetList(new Guid("{111...}"), true);
    // list logic
}
1 голос
/ 19 ноября 2009

Если у вас есть MOSS Search, то это может помочь, в зависимости от лаги между созданными списками и необходимостью их поиска. Возможно, вы могли бы сопоставить идентификатор списка как управляемое свойство и выполнить быстрый поиск объектов списка с указанным идентификатором.

Для многих классов задач кажется, что поиск - это самый быстрый способ перебора огромных массивов данных. На самом деле, если этот подход работает для вас, вам даже не нужно знать семейство сайтов заранее. В данный момент у меня нет доступа ни к одной из моих сред MOSS, поэтому не могу убедиться, что это сработает.

1 голос
/ 18 ноября 2009

MS не поддерживает это:) ... Но взгляните на это для смеха: http://weblogs.sqlteam.com/jhermiz/archive/2007/08/15/60288.aspx

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