3

複数の SubSite を継承した Site を持っていますが、

各サブサイトは、ページ ライブラリに添付されたデフォルトの SharePoint 承認ワークフローを取得しました。

したがって、ページが承認のために送信されるたびに、

各サブサイトのワークフロー タスク リストにタスクが作成されます。

次の例のように、SPSiteDataQuery を使用して、ワークフロー タスク リスト内のすべてのサブサイトからデータをクエリするように管理します。

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;

ページが承認待ちの場合、ワークフロー ステータスは [未開始] になり、承認されると [完了] になります。

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

アドバイスをよろしくお願いします。

4

1 に答える 1

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);                            
                    }
                }
            }                
        }
于 2011-06-02T11:32:23.597 に答える