2012-03-08 3 views
1

を実行した後から来たサブサイトを取得する:私はquery.ViewFields += "<FieldRef Name='FileRef' Nullable='TRUE' />";を使用する場合、私はあることを理解し、私はアイテムがどこから来たというサブサイトを取得したいと思い、私の結果で私は次のコード持っているアイテムは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); 

をアイテムの完全なURLを取得できますが、とにかくそこから来たサブサイトを取得できますか?このような何か: query.ViewFields += "<FieldRef Name='SiteName' Nullable='TRUE' />";

答えて

2

試してみてください。詳細については

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

SPSiteDataQuery.ViewFieldsを参照してください。

サイトのプロパティはProjectPropertyタグを使用して含まれることができます。 ProjectPropertyタグのname属性は、特定のプロパティを識別し、次のいずれかの値が含まれていてもよい:

  • タイトル - アイテムを含むWebサイトのタイトルを。

  • WebId - アイテムを含むWebサイトのGUID。

1

あなたはウェブを検索するためにEncodedAbsUrlとFileRefの両方に依存することができます。最初のアイテムにはアイテムへのパス全体が含まれ、2番目のアイテムには部分的な部分だけが含まれます(私がうまく覚えている場合)。サブストリングを実行すると、アイテムがホストされているWebのパスが表示されます。

私は私が私の前に私のVMを持っていないが、あなたはSharePointのエクスプローラ/ Managerなどのツールで見れば、あなたはすべての隠されたリストアイテムのフィールドを参照してくださいよ、あなたがつかむことができるでしょうごめんなさいあなたのソリューションに最も近いもの(ただし、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 
} 
関連する問題