2011-05-15 10 views
3

私は継承された複数のサブサイトを持つサイトを持つ、サブサイトの各ページは、承認のために提出されたときにページライブラリに付属の既定のSharePoint承認ワークフロー、したがって、承認待ちのページをプログラムで取得するにはどうすればよいですか?

を得た

があります各サブサイトのワークフロータスクリストで作成されたタスクである必要があります。ページは承認されるたびに、ワークフローの状態が開始されていないと、それが完了する

DataTable dt = null; 
using (SPSite site = new SPSite("Site Url")) 
{ 
    using (SPWeb web = site.OpenWeb()) 
    { 
     SPSiteDataQuery q = new SPSiteDataQuery(); 
     q.Lists = "<Lists ServerTemplate='107' />"; 
     q.Query = @"<OrderBy><FieldRef Name='Modified' Ascending='False' /></OrderBy>"; 
     q.ViewFields = "<FieldRef Name=\"Title\" />"\; 
     q.Webs = "<Webs Scope='Recursive'/>"; 
     q.RowLimit = 20; 

     dt = web.GetSiteData(q); 
    } 
} 
return dt; 

:次の例のようSPSiteDataQueryを使用することにより

は、ワークフロータスクリスト内のすべてのサブサイトからのデータを照会するために管理しますそれが承認されたとき。

したがって、すべてのワークフローステータスがNot Startedに基づいてクエリを実行すると、承認待ちのすべての結果が返されますか? 、タイトルとFileRefUrlのページを取得するにはどうすればよいですか?

アドバイスはありがとうございます。個人的に

答えて

4

、私はこれを行うだろう:

 using (SPSite site = new SPSite(SharepointServerURL)) 
     { 
      using (SPWeb web = site.OpenWeb()) 
      {      
       SPFolder sitePages = web.Folders["/SitePages"]; 
       SPListItemCollection pages = sitePages.DocumentLibrary.Items;      

       foreach (SPListItem page in pages) 
       { 
        if (page.ModerationInformation.Status == SPModerationStatusType.Pending) 
        { 
         Console.WriteLine(page.Title + page.Url);        
        } 
       } 
      }     
     } 
関連する問題