How to: Update List Items

系统 1624 0
SharePoint 2010
0 out of 20 rated this helpful  Rate this topic
 

Published: May 2010

This programming task shows how to use the  UpdateListItems  method of the  Lists  Web service to update items in a list through a Microsoft Windows Forms application.

Use an  XmlElement  object to create a  Batch  element in  Collaborative Application Markup Language (CAML)  that can contain multiple  Method  elements, and use the  UpdateListItems(String, XmlNode)  method to post the methods and update items.

Note

The number of list items that you can modify through the  UpdateListItems  method in a single batch is limited to 160.

The  Cmd  attribute of each  Method  element determines the operation that is performed on an item by specifying one of the following values:

  • Delete  -- Delete an item.

  • New  -- Create an item.

  • Update  -- Modify an item.

  • Move  -- Move an item.

Before you begin, create a Windows Forms application in Microsoft Visual Studio. For information about setting a Web reference to a SharePoint Foundation Web service, see  Web Service Guidelines .

To add code to update list items

  1. Open  Form1  in Design view, open the  Toolbox , and then drag a  Button  control onto the form.

  2. Double-click the  Button  control to display the  Code Editor , and then add the following lines of code to the Button1_Click  event handler.

     
                              
                                'Declare and initialize a variable for the Lists Web service.
                              
                              
                                Dim
                              
                               listService 
                              
                                As
                              
                              
                                New
                              
                               sitesWebServiceLists.Lists()
    
    
    
    
                              
                                'Authenticate the current user by passing their default
                              
                              
                                'credentials to the Web service from the system credential cache.
                              
                              
    
    listService.Credentials = System.Net.CredentialCache.DefaultCredentials
    
    
    
    
                              
                                'Set the Url property of the service for the path to a subsite.
                              
                              
    
    listService.Url = 
                              
                                "http://MyServer/sites/MySiteCollection/_vti_bin/Lists.asmx"
                              
                              
                                'Get Name attribute values (GUIDs) for list and view. 
                              
                              
                                Dim
                              
                               ndListView 
                              
                                As
                              
                               System.Xml.XmlNode = listService.GetListAndView(
                              
                                "MyList"
                              
                              , 
                              
                                ""
                              
                              )
    
    
                              
                                Dim
                              
                               strListID 
                              
                                As
                              
                              
                                String
                              
                               = ndListView.ChildNodes(0).Attributes(
                              
                                "Name"
                              
                              ).Value
    
    
                              
                                Dim
                              
                               strViewID 
                              
                                As
                              
                              
                                String
                              
                               = ndListView.ChildNodes(1).Attributes(
                              
                                "Name"
                              
                              ).Value
    
    
    
    
                              
                                'Create an XmlDocument object and construct a Batch element and its 
                              
                              
                                'attributes. Note that an empty ViewName parameter causes the method 
                              
                              
                                'to use the default view. 
                              
                              
                                Dim
                              
                               doc 
                              
                                As
                              
                              
                                New
                              
                               System.Xml.XmlDocument()
    
    
                              
                                Dim
                              
                               batchElement 
                              
                                As
                              
                               System.Xml.XmlElement = doc.CreateElement(
                              
                                "Batch"
                              
                              )
    
    batchElement.SetAttribute(
                              
                                "OnError"
                              
                              , 
                              
                                "Continue"
                              
                              )
    
    batchElement.SetAttribute(
                              
                                "ListVersion"
                              
                              , 
                              
                                "1"
                              
                              )
    
    batchElement.SetAttribute(
                              
                                "ViewName"
                              
                              , strViewID)
    
    
    
    
                              
                                'Specify methods for the batch post using CAML. To update or delete, 
                              
                              
                                'specify the ID of the item, and to update or add, specify 
                              
                              
                                'the value to place in the specified columns.
                              
                              
    
    batchElement.InnerXml = 
                              
                                "<Method ID='1' Cmd='Update'>"
                              
                               +
    
       
                              
                                "<Field Name='ID'>6</Field>"
                              
                               +
    
       
                              
                                "<Field Name='Title'>Modified sixth item</Field></Method>"
                              
                               +
    
       
                              
                                "<Method ID='2' Cmd='Update'><Field Name='ID'>7</Field>"
                              
                               +
    
       
                              
                                "<Field Name='Title'>Modified seventh item</Field></Method>"
                              
                               +
    
       
                              
                                "<Method ID='3' Cmd='Delete'><Field Name='ID'>5</Field>"
                              
                               +
    
       
                              
                                "</Method><Method ID='4' Cmd='New'>"
                              
                               +
    
       
                              
                                "<Field Name='Title'>Added item</Field></Method>"
                              
                              
                                'Update list items. This example uses the list GUID, 
                              
                              
                                'which is recommended, but the list display name will also work.
                              
                              
    
    listService.UpdateListItems(strListID, batchElement)
    
    
                            

     

     
                              
                                /*Declare and initialize a variable for the Lists Web service.*/
                              
                              
    
    sitesWebServiceLists.Lists listService = 
                              
                                new
                              
                               sitesWebServiceLists.Lists();
    
    
    
    
                              
                                /*Authenticate the current user by passing their default
    
    credentials to the Web service from the system credential cache.*/
                              
                              
    
    listService.Credentials =
    
    System.Net.CredentialCache.DefaultCredentials;
    
    
    
    
                              
                                /*Set the Url property of the service for the path to a subsite.*/
                              
                              
    
    listService.Url = 
                              
                                "http://MyServer/sites/MySiteCollection/_vti_bin/Lists.asmx"
                              
                              ;
    
    
    
    
                              
                                /*Get Name attribute values (GUIDs) for list and view. */
                              
                              
    
    System.Xml.XmlNode ndListView = listService.GetListAndView(
                              
                                "MyList"
                              
                              , 
                              
                                ""
                              
                              );
    
    
                              
                                string
                              
                               strListID = ndListView.ChildNodes[0].Attributes[
                              
                                "Name"
                              
                              ].Value;
    
    
                              
                                string
                              
                               strViewID = ndListView.ChildNodes[1].Attributes[
                              
                                "Name"
                              
                              ].Value;
    
    
    
    
                              
                                /*Create an XmlDocument object and construct a Batch element and its
    
    attributes. Note that an empty ViewName parameter causes the method to use the default view. */
                              
                              
    
    System.Xml.XmlDocument doc = 
                              
                                new
                              
                               System.Xml.XmlDocument();
    
    System.Xml.XmlElement batchElement = doc.CreateElement(
                              
                                "Batch"
                              
                              );
    
    batchElement.SetAttribute(
                              
                                "OnError"
                              
                              , 
                              
                                "Continue"
                              
                              );
    
    batchElement.SetAttribute(
                              
                                "ListVersion"
                              
                              , 
                              
                                "1"
                              
                              );
    
    batchElement.SetAttribute(
                              
                                "ViewName"
                              
                              , strViewID);
    
    
    
    
                              
                                /*Specify methods for the batch post using CAML. To update or delete, 
    
    specify the ID of the item, and to update or add, specify 
    
    the value to place in the specified column.*/
                              
                              
    
    batchElement.InnerXml = 
                              
                                "<Method ID='1' Cmd='Update'>"
                              
                               +
    
       
                              
                                "<Field Name='ID'>6</Field>"
                              
                               +
    
       
                              
                                "<Field Name='Title'>Modified sixth item</Field></Method>"
                              
                               +
    
       
                              
                                "<Method ID='2' Cmd='Update'><Field Name='ID'>7</Field>"
                              
                               +
    
       
                              
                                "<Field Name='Title'>Modified seventh item</Field></Method>"
                              
                               +
    
       
                              
                                "<Method ID='3' Cmd='Delete'><Field Name='ID'>5</Field>"
                              
                               +
    
       
                              
                                "</Method><Method ID='4' Cmd='New'>"
                              
                               +
    
       
                              
                                "<Field Name='Title'>Added item</Field></Method>"
                              
                              ;
    
    
    
    
                              
                                /*Update list items. This example uses the list GUID, which is recommended, 
    
    but the list display name will also work.*/
                              
                              
                                try
                              
                              
    
    {
    
       listService.UpdateListItems(strListID, batchElement);
    
    }
    
    
                              
                                catch
                              
                               (SoapServerException ex)
    
    {
    
       MessageBox.Show(ex.Message);
    
    }
    
    
                            
    Note

    Posting the  UpdateListItems  method silently fails if a specified item does not exist. The identifier (ID) for a deleted item is maintained after a delete operation. Consequently, the example deletes the fifth item in the list, but number 5 is not reassigned as the ID for another item.

  3. On the  Debug  menu, click  Start Debugging , or press  F5 , to test the form.

     

    http://msdn.microsoft.com/en-us/library/ms440289.aspx

How to: Update List Items


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论