3

我有一个继承了多个子站点的站点,

每个子站点都在页面库上附加了一个默认的 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 回答