当您不知道 ID 时,Sharepoint 中的批处理元素可删除列表项

发布于 2024-07-29 11:40:47 字数 773 浏览 1 评论 0原文

我想使用 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 就不可能完成...

I want to delete an item in a list when it matches some critera using UpdateListItems web service. I dont know the ID of the list item that I want to delete but do know the criteria.

For example in SQL I could do:

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

How would you write a Batch Element to do this?

Update

Would it be something like this?

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

Is the ID for the Method or the ID of the thing you wish to delete?

Update

I have tried the following code and the error that is returned is

Invalid URL Parameter

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

My guessing is that it is not possible to do without the ID...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

鲜血染红嫁衣 2024-08-05 11:40:54

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

I am not that familiar with using the web services, but I assume there is one for searching. Using the API you would create an SPQuery and use CAML to get the list items you wanted to remove.

喵星人汪星人 2024-08-05 11:40:53

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

// 用于解密从 SharePoint Server 2010 对象模型列表项返回的 XML 字符串的代码。 - 礼貌 - 拉吉夫·卡普尔 - Ideals.co.in。 查看 http://www.ideals.co.in/estore/code.php 完整的解决方案。

        string sRetVal = "";
        string myXMLStr = "​<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 + "*#******");

Similarly, to get list item returned from the the Sharepoint 2010 object model that can be used in C# corresponding value of a key node in xml we have to get rid of that additional character attached at position 1 in the xml. This can be done as follows:

// Code to decipher XML string returned from SharePoint Server 2010 object model list item. - Courtesy - Rajiv Kapoor - ideals.co.in. View http://www.ideals.co.in/estore/code.php for complete solution.

        string sRetVal = "";
        string myXMLStr = "​<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 + "*#******");
请持续率性 2024-08-05 11:40:52

这看起来不可能。

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

This does not look possible.

My way round this was to query the list and get the id's. Loop for the response pull out the id's then create a method for each ID to delete it.

巴黎夜雨 2024-08-05 11:40:51

作为 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);

这是对象模型规范,但它自然扩展到 Web 服务调用中)

然后,您将循环遍历列表项并构建批次。

As an addition to ChrisB's answer (formatting a CAML query in a comment didn't seem to work out), you'd make the query something like this:

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);

(this is the object model specification, but it extends naturally into the webservices call)

Then you'd loop through the listitems and build up your batch.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文