首页 > 解决方案 > 如何使用 CSOM 获得分配批准项目?

问题描述

目前我正在开发一个应用程序以更简单的方式访问我公司的 Sharepoint 站点。我的应用程序功能之一是访问 Approvals Item(或在我的研究中定义为 _moderationStatus)。

我做了很多研究来完成这件事,但我发现是从 List 中获得 Approvals (_moderationStatus)。同时,我真正需要的是从作业/任务中获得批准。有没有办法做到这一点?

在这里,我发现与我想要的最接近的代码(我认为)

this.oListItemUpdate = oList.getItemById(listID);

var wrkFlwApproval = this.oListItem.get_item(‘_ModerationStatus’);
if(wrkFlwApproval == 0)
{
  this.oListItemUpdate.set_item(‘_ModerationStatus’, 0 );    
}

public enum SPModerationStatusType
{
  Approved, //0
  Denied,   //1
  Pending,  //2
  Draft,    //3
  Scheduled //4
}

如果我可以在 sharepoint List 中获取 TaskList,我可以使用该代码,但我找不到它们。如果有其他解决方案那就太好了。

标签: c#sharepoint-2013

解决方案


以下 CSOM 代码供您参考。

ClientContext ctx = new ClientContext("http://sp2013");
ctx.Credentials = new NetworkCredential("username", "password", "domain");
CamlQuery camlQuery = new CamlQuery();
List list = ctx.Web.Lists.GetByTitle("Tasks");
ListItemCollection listItems = list.GetItems(camlQuery);
ctx.Load(listItems);
ctx.ExecuteQuery();

foreach (var listItem in listItems)
{
    string status = "";
    string mStatus = listItem["_ModerationStatus"].ToString();
    if (mStatus == "0")
    {
        status = "Approved";
    }
    else if (mStatus == "1")
    {
        status = "Denied";
    }
    else if (mStatus == "2")
    {
        status = "Pending";
    }
    else if (mStatus == "3")
    {
        status = "Draft";
    }
    else if (mStatus == "4")
    {
        status = "Scheduled";
    }
    Console.WriteLine("Title: " + listItem["Title"] + " Approval Status:" + status);
}

推荐阅读