Пакетный элемент в Sharepoint для удаления элемента списка, если вы не знаете идентификатор - PullRequest
1 голос
/ 31 июля 2009

Я хочу удалить элемент в списке, когда он соответствует некоторым критериям с помощью веб-службы UpdateListItems. Я не знаю идентификатор элемента списка, который я хочу удалить, но знаю критерии.

Например, в 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>

Идентификатор метода или идентификатор того, что вы хотите удалить?

Обновление

Я пробовал следующий код, и возвращается сообщение об ошибке

Invalid URL Parameter

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

Я предполагаю, что без идентификатора невозможно обойтись ...

Ответы [ 4 ]

2 голосов
/ 31 июля 2009

Как дополнение к ответу 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);

(это спецификация объектной модели, но она естественным образом распространяется на вызов веб-сервисов)

Затем вы перебираете элементы списка и создаете свой пакет.

2 голосов
/ 12 августа 2009

Это не выглядит возможным.

Мой способ обойти это - запросить список и получить идентификаторы. Цикл для ответа вытащить идентификаторы, а затем создать метод для каждого идентификатора, чтобы удалить его.

1 голос
/ 28 января 2011

Аналогично, чтобы получить элемент списка, возвращенный из объектной модели Sharepoint 2010, который может использоваться в C #, соответствующем значению ключевого узла в xml, нам нужно избавиться от этого дополнительного символа, прикрепленного в позиции 1 в xml. Это можно сделать следующим образом:

// Код для расшифровки строки XML, возвращенной из элемента списка объектной модели SharePoint Server 2010. - Вежливость - Раджив Капур - 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 + "*#******");
0 голосов
/ 31 июля 2009

Я не очень знаком с использованием веб-сервисов, но я предполагаю, что есть один для поиска. Используя API, вы создадите SPQuery и используете CAML для получения элементов списка, которые вы хотите удалить.

...