1

我想删除列表中的某个项目,当它使用 UpdateListItems Web 服务与某些条件匹配时。我不知道要删除的列表项的 ID,但知道条件。

例如在 SQL 中我可以这样做:

DELETE FROM listName WHERE LastName='Bauer' AND FirstName='Jack'

您将如何编写批处理元素来执行此操作?

更新

会是这样吗?

<Batch PreCalc='TRUE' OnError='Continue'>
  <Method ID='1' Cmd='Delete'>
    <Field Name='LastName'>Bauer</Field>
    <Field Name='FirstName'>Jack</Field>
  </Method>
</Batch>

是方法的 ID 还是您要删除的事物的 ID?

更新

我尝试了以下代码,返回的错误是

Invalid URL Parameter

The URL provided contains an invalid Command or Value. Please check the URL again.

我的猜测是没有ID是不可能的......

4

4 回答 4

2

作为对 ChrisB 的回答的补充(在评论中格式化 CAML 查询似乎不起作用),您可以使查询如下所示:

SPQuery query = new SPQuery();
query.Query = "<Where><And>"+
  "<Eq><FieldRef Name='LastName'/><Value Type='Text'>Bauer</Value></Eq>"
  "<Eq><FieldRef Name='FirstName'/><Value Type='Text'>Jack</Value></Eq>"
  "</And></Where>";
SPListItemCollection items = list.GetItems(query);

(这是对象模型规范,但它自然地延伸到 webservices 调用中)

然后你会遍历列表项并建立你的批处理。

于 2009-07-31T17:35:58.860 回答
2

这看起来不可能。

我的方法是查询列表并获取 id。循环响应拉出 id,然后为每个 ID 创建一个删除它的方法。

于 2009-08-12T11:09:53.197 回答
1

同样,要获取从 Sharepoint 2010 对象模型返回的列表项,该列表项可以在 C# 中使用 xml 中关键节点的对应值,我们必须摆脱附加在 xml 中位置 1 处的附加字符。这可以按如下方式完成:

// 用于破译从 SharePoint Server 2010 对象模型列表项返回的 XML 字符串的代码。- 礼貌 - Rajiv Kapoor - Ideals.co.in。查看http://www.ideals.co.in/estore/code.php以获得完整的解决方案。

        string sRetVal = "";
        string myXMLStr = "​&lt;robot><Key>ConstSigned</Key><Value>Rad Is Signed</Value><Key>CodeAddChangeReqSub</Key><Value>ACRS</Value><Key>CodeAddChangeReqInit</Key><Value>ACRI</Value><Key>CodeSupTaskComp</Key><Value>STC</Value><Key>CodeSupApprComp</Key><Value>SAC</Value><Key>CodeSupRejComp</Key><Value>SAR</Value><Key>CodeOperAppr</Key><Value>OPA</Value><Key>CodeOperRej</Key><Value>OPR</Value><Key>Oper1TaskCreated</Key><Value>OTC</Value><Key>Oper2TaskCreated</Key><Value>QCTC</Value><Key>Oper2TaskAppr</Key><Value>QCRA</Value><Key>Oper2TaskRej</Key><Value>QCRR</Value><Key>ApprPending</Key><Value>Approval Pending</Value><Key>PendingProcessing</Key><Value>Pending Processing</Value><Key>PendingReview</Key><Value>Pending Review</Value><Key>Approved</Key><Value>Approved</Value><Key>GroupOperation</Key><Value>Operation</Value><Key>WorkFlowHistoryList</Key><Value>/Lists/Workflow History</Value><Key>ColInitDateTime</Key><Value>Initiated Date Time</Value><Key>ColWorkFlowHistoryParentInst</Key><Value>Workflow History Parent Instance</Value><Key>ColWorkflowAssId</Key><Value>Workflow Association ID</Value><Key>ColListId</Key><Value>List ID</Value><Key>ColPrimaryItemId</Key><Value>Primary Item ID</Value><Key>ColDate</Key><Value>Date Occurred</Value><Key>ColOutcome</Key><Value>Outcome</Value><Key>ColDesc</Key><Value>Description</Value><Key>ColCreated</Key><Value>Created</Value><Key>ColTaskStatus</Key><Value>TaskStatus</Value><Key>ServiceReqList</Key><Value>Service Request</Value><Key>CAUEventList</Key><Value>Events</Value><Key>ReqStatus1</Key><Value>Request Status</Value><Key>ReqStatCode</Key><Value>Request Status Code</Value><Key>ColumnCode</Key><Value>Code</Value><Key>SuperUser</Key><Value>SuperUser</Value><Key>AssignedTo</Key><Value>AssignedTo</Value><Key>TaskListId</Key><Value>ID</Value><Key>DocLibId</Key><Value>List</Value><Key>WorkflowInstanceId</Key><Value>WorkflowInstanceID</Value><Key>TaskTitle</Key><Value>Title</Value><Key>Priority</Key><Value>Priority</Value><Key>ReqStatusCode</Key><Value>Request Status Code</Value><Key>ServiceRequestList</Key><Value>Service Request</Value><Key>CAUEventList</Key><Value>Events</Value><Key>ColumnDesc</Key><Value>Description</Value><Key>ColumnStatus</Key><Value>Status</Value><Key>Completed</Key><Value>Completed</Value><Key>ReqStatus</Key><Value>Request Status</Value><Key>ColumnTaskStatus</Key><Value>TaskStatus</Value><Key>ColumnPerComp</Key><Value>PercentComplete</Value><Key>Rejected</Key><Value>Rejected</Value><Key>CodeSupTaskCreated</Key><Value>STC</Value><Key>CodeSupTaskInit</Key><Value>SAI</Value><Key>Oper1TaskInit</Key><Value>OPI</Value><Key>Oper2TaskInit</Key><Value>QCRI</Value><Key>ColActedBy</Key><Value>Acted By</Value><Key>WorkFlowCode</Key><Value>Workflow Code</Value><Key>ProcCode</Key><Value>Process Code</Value></robot>";
        string myXMLStr1 = myXMLStr;
        int ln = myXMLStr.Length;
        int lnMinus1 = ln - 1;
        char[] myst = { ' ', ' ', ' '};// create a long array enough to fit the xml
        string mys = "";
        object m1 ;
        string m2 = ""; 

        myXMLStr.CopyTo(0, myst, 0, ln);            m1 = myst.Clone();
        m2 = new string(myst);// m1;// ToString();
        m2.TrimStart();
        m2.TrimEnd();
        m2 = m2.Substring(1);
        sRetVal = GetConfigVal(m2, "ProcCode");
        Console.WriteLine("****#*" + sRetVal + "*#******");
于 2011-01-28T13:59:59.093 回答
0

我对使用网络服务不是很熟悉,但我认为有一个用于搜索。使用 API,您将创建一个 SPQuery 并使用 CAML 来获取您想要删除的列表项。

于 2009-07-31T13:41:14.147 回答