2010-10-01 3 views
3

Я пытаюсь добавить элемент в список в Sharepoint. На данный момент я пытаюсь добавить элемент через CAMLДобавление ListItem в список в Sharepoint 2007

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

вот как я тестирую его на данный момент. SPLists является веб-ссылка на HTTP: ///_vti_bin/lists.asmx

void Test(){ 
     var listService = new SPLists.Lists(); 

     string strBatch ="<Method ID='1' Cmd='New'><Field Name='Title'>Test</Field></Method>"; 

     XmlDocument xmlDoc = new System.Xml.XmlDocument(); 

     System.Xml.XmlElement elBatch = xmlDoc.CreateElement("Batch"); 

     elBatch.SetAttribute("OnError", "Continue"); 
     elBatch.SetAttribute("ListVersion", "1"); 

     elBatch.InnerXml = strBatch; 
     XmlNode ndReturn = listService.UpdateListItems("TestList",elBatch); 

     Console.Write(ndReturn.OuterXml); 
     Console.WriteLine(""); 

} 

someone already asked a similar/same question here на SO, но не ответил

Редактировать
Это ошибка, я получаю

<Results xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<Result ID="1,New">
<ErrorCode>0x81020026</ErrorCode>
<ErrorText>The list that is referenced here no longer exists.</ErrorText>
</Result>
</Results>

Когда я настраивал веб-ссылку, указывал ее на правильный сайт и даже смотрел на список в s harepoint, чтобы убедиться, что он есть.

+1

(1) Добавьте 'try ... catch ...' вокруг 'UpdateListItems' и проверьте, не создано ли исключение. (2) Вот пример * add item *: http://msdn.microsoft.com/en-us/library/ms440289.aspx. –

+0

да, я сделал это. но ошибка не очень полезна. –

+0

оказался полезнее, чем я думал. Как только я нашел проблему, ошибка имела смысл. –

ответ

0

Это то, что я нашел, что решил мою проблему.

Когда я установил веб-ссылку в визуальной студии, я указал ее на http://sharepointSite/subweb1/subweb2/_vit_bin/lists.asmx в качестве ссылки.

Однако, когда я вернулся и сегодня проверял, он указывал на http://sharepointSite/_vit_bin/lists.asmx. вручную изменив его обратно на http://sharepointSite/subweb1/subweb2/_vit_bin/lists.asmx в файле app.config, все изменилось.

@Kit +1 Я также добавил в ваше предложение. С вашим предложением и тем, что я узнал о веб-ссылке, он работал в первый раз.

В итоге я создал только веб-сайт с одним полем (Title), чтобы заставить его работать.

2

Похоже, вы, вероятно, потребуется небольшое дополнение к вашему strBatch (use this article as a reference): <Field Name='ID'>New</Field>

Что означает, что вы будете иметь что-то вроде:

string strBatch ="<Method ID='1' Cmd='New'><Field Name='ID'>New</Field><Field Name='Title'>Test</Field></Method>"; 

Кроме того, если у вас есть какие-либо необходимые поля на вашем список, вам, вероятно, придется также указать их.

Смежные вопросы