2012-03-08 3 views
1

을 수행 한 후 온 하위 사이트 방법 :, 내가 항목에서 온 하위 사이트를 좀하고 싶습니다 내 결과에서항목이 나는 다음과 같은 코드를 한 spsitedataquery

SPSiteDataQuery query = new SPSiteDataQuery(); 

       //Get List query string 

       query.Lists = "<Lists BaseType='1'></Lists>"; 


       query.ViewFields = "<FieldRef Name='Title' Nullable='TRUE' />"; 
       query.ViewFields += "<FieldRef Name='ContentTypeId' Nullable='TRUE' />"; 
       query.ViewFields += "<FieldRef Name='ContentType' Nullable='TRUE' />"; 
       query.ViewFields += "<FieldRef Name='ArticleStartDate' Nullable='TRUE' />"; 
       query.ViewFields += "<FieldRef Name='Synopsis' Nullable='TRUE' />"; 
       query.ViewFields += "<FieldRef Name='PublishingRollupImage' Nullable='TRUE' />"; 
       query.ViewFields += "<FieldRef Name='Location' Nullable='TRUE' />"; 
       query.ViewFields += "<FieldRef Name='LOBGroup' Nullable='TRUE' />"; 
       query.Query = "<Where>" + 
            "<Contains>" + 
            "<FieldRef Name='ContentType'/>" + 
            "<Value Type='Text'>DCP_Article</Value>" + 
            "</Contains>" + 
           "</Where>"; 



       query.Query += "<OrderBy>" + 
            "<FieldRef Name='ArticleStartDate' Descending='TRUE' />" + 
           "</OrderBy>"; 


       query.RowLimit = Convert.ToUInt32(loadsize); 
       query.Webs = "<Webs Scope='Recursive' />"; 


       //Get Site Data from web 
       DataTable dt = web.GetSiteData(query); 

이해를 그 나는 query.ViewFields += "<FieldRef Name='FileRef' Nullable='TRUE' />"; I를 사용하는 경우 항목의 전체 URL을 얻을 수 있지만 어쨌든 나는 그것이 나온 하위 사이트를 얻을 수 있습니까? 이 같은 : query.ViewFields += "<FieldRef Name='SiteName' Nullable='TRUE' />";

답변

2

시도 : 자세한 내용은

query.ViewFields += "<ProjectProperty Name=\"Title\" />"; 

, SPSiteDataQuery.ViewFields를 참조하십시오

사이트 속성은 ProjectProperty 태그를 사용하여 포함 할 수있다. ProjectProperty 태그의 이름 속성은 특정 속성을 식별하고 다음 값 중 하나를 포함 할 수 있습니다 :

  • 제목 - 항목을 포함하는 웹 사이트의 제목을.

  • WebId - 항목이 들어있는 웹 사이트의 GUID입니다. 당신은 EncodedAbsUrl와 FileRef 모두에 의존 할 수

1

웹을 검색 할 수 있습니다. 첫 번째 항목에는 항목에 대한 전체 경로가 포함되고 두 번째 항목에는 부분 부분 만 포함됩니다 (잘 기억하는 경우). 하위 문자열을 수행하면 항목이 호스팅되는 웹 경로가 제공됩니다.

죄송합니다. 내 VM이 없지만 SharePoint Explorer/Manager와 같은 도구를 사용하면 숨겨진 목록 항목 필드가 모두 표시되어 해당 VM을 가져올 수 있습니다. 하나는 솔루션에 가장 가까운 (하지만 EncodedAbsUrl과 FileRef에 의존하는 것이 가장 안전합니다)

0

그리고 또 다른 옵션은 결과 집합에 포함될 WebId 열을 사용하는 것입니다. 결과를 가져온 웹을 여는 데 사용할 수있는 guid입니다.

Guid webGuid = new Guid(row["WebId"].ToString()); 
using(SPWeb web = SPContext.Current.Site.AllWebs[webGuid]) 
{ 
    //Do some thing with the SPWeb 
}