2009-11-18 2 views
2

SPList.ID와 사이트 모음 (또는 하위 웹이있는 SPWeb)을 사용하면 어떻게 신속하게 주어진 ID로 문서 라이브러리를 찾을 수 있습니까?어떻게 신속하게 ID로 셰어 포인트 문서 라이브러리를 찾을 수 있습니까?

모든 웹을 통해 반복적으로 열거하고 각각의 웹을 나열 할 수 있지만 내 경우에는 수천 개의 하위 웹이있을 수 있으며 실시간 솔루션을 찾고 있습니다.

이 작업을 빨리 수행 할 수없는 경우 문서 라이브러리를 고유하게 식별하는 방법에 대한 다른 제안이 있습니까? 전체 경로 (URL)를 저장할 수는 있지만 식별 정보는 공개적으로 표시되며 정확한 SharePoint 문서 구조를 제공하는 것이 매우 편합니다. 별도의 목록에 수동 매핑 ID < -> 라이브러리 매핑을 유지해야합니까?) ... 하지만 웃음이 좀 봐 :

답변

1

ListID를 어딘가에 저장하기 때문에 WebId를 저장할 수도 있습니다. 목록은 항상 상황에 맞는 SPWeb 열, 그래서 당신에 갈 경우 :있는 WebID 및 ListId 간단히 할 수있는 데

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

:

using(SPWeb subweb = (new SPSite("http://url")).OpenWeb(new Guid("{000...}"))) 
{ 
    SPList list = subweb.Lists.GetList(new Guid("{111...}"), true); 
    // list logic 
} 
+0

좋은 제안! 단일 GUID에 필요한 저장소가 이미이 특정 응용 프로그램 (사용자 정의 id -> url 목록을보다 매력적으로 만들기 때문에)에 필요한 실용적인 문제가 있습니다. 그러나 내 고유 한 ID를 생성 할 수는 있지만 확고한 점을 만드십시오. –

+0

오, 그리고 귀하의 예제에서는, 그 성명을 사용하여 웹을 처분하지 않을까요 (SPSite 매달려 떠나)? –

+0

예 Paul! 그것을 고맙게 여겨 주셔서 감사합니다, 내 로컬 테스트 컨텍스트를 사용하고 있었고 단순히 'URL 버전'으로 바꿉니다. –

1

MS는이 기능을 지원하지 않는 내가 수동 ID 투표 http://weblogs.sqlteam.com/jhermiz/archive/2007/08/15/60288.aspx

+0

감사합니다,하지만 우리는 공인 골드 파트너를 유지하기 위해 노력하고있다, 그래서 그것은 정말로 선택 사항이 아닙니다 ... 그리고 우리는 확실히 콜백이 실행 가능할 것인지를보기 위해 데이터베이스를 들여다 보지 않았습니다. * nudge nudge, wink *. :-) –

+0

문제는 없지만 시도해 볼 것이라고 생각했습니다. :) – JonH

3

을 -> 최상위의 URL 쌍의 일치, 잘 알려진 목록 권한 상승 계정에서만 볼 수 있습니다.

1

MOSS 검색을 사용할 수있는 경우 이러한 목록 사이에 지연이 있는지 검색하고 검색해야 할 필요성에 따라 도움이 될 수 있습니다. 목록 id를 관리 속성으로 매핑하고 해당 ID가있는 목록 개체를 빠르게 검색 할 수 있습니다.

많은 종류의 문제에 대해 검색은 거대한 데이터 세트를 추출하는 가장 빠른 방법입니다. 실제로이 접근 방식이 효과가 있다면 실제로 사이트 수집을 미리 알 필요조차 없습니다. 현재 내 MOSS 환경에 액세스 할 수 없으므로 이것이 작동하는지 확인할 수는 없습니다.

관련 문제