13916729435 发表于 2015-9-24 11:51:34

SharePoint WebService 之更新审批状态

  SharePoint列表使用WebService操作,可以进行增删改查,但是操作开启审批功能列表的时候,会遇到列表项审批的问题,只要进行修改,该项目就会变成待定状态,然后想要修改审批状态,就使用UpdateListItems方法,一直自以为是的以为,修改审批状态,不就是更新么Cmd='Update'不就可以了,事实却不是如此。
  审批方法名称UpdateListItems(string ListName, XmlNode updates)
  参数名称
  ListName为列表名称,string类型
  Updates   为XmlNode类型,用于更新
  <Method ID='1' Cmd='Update'> Cmd参数,Update为更新
  <Field Name='ID'>1</Field> Name参数,字段名称;Field中的值,ID字段的值
  _ModerationStatus为审批状态字段
  审批状态:0为已批准 1为已拒绝 2为待定 3为草稿
  
  示例代码
WebReference.Lists   listService = new WebReference.Lists();
listService.Credentials = System.Net.CredentialCache.DefaultCredentials;
string strBatch = "<Method   ID='1' Cmd='Update'>" +
                      "<Field   Name='ID'>1</Field>" +
                      "<Field   Name='_ModerationStatus'>0</Field></Method>";
XmlDocument xmlDoc = new   System.Xml.XmlDocument();
System.Xml.XmlElement   elBatch = xmlDoc.CreateElement("Batch");
elBatch.InnerXml = strBatch;
XmlNode ndReturn = listService.UpdateListItems("通知公告", elBatch);
  Console.Write("操作成功");
  
  如上面的代码,居然执行完毕,也输出“操作成功”,真是见鬼了,但是审批状态,一直为待定,无论修改一次,或者修改几次,都是不会改变的,后来继续查资料,发现更新审批状态时的cmd不是update,真见鬼,居然是Moderate,如下面表格。
string strBatch = "<Method   ID='1' Cmd='Moderate'>" +
                      "<Field   Name='ID'>1</Field>" +
                      "<Field   Name='_ModerationStatus'>0</Field></Method>";
  修改完了strBatch的Cmd以后,执行,执行成功!
  ******************************************************************************
  作者:霖雨
  出处:http://www.cnblogs.com/jianyus
  本文版权归 霖雨和博客园共有,欢迎转载,但请注明出处。
  
页: [1]
查看完整版本: SharePoint WebService 之更新审批状态