c# asp.net sharepoint wss

c# - Actualizar el elemento de la lista de Sharepoint



asp.net wss (4)

Recibí un error de seguimiento ...

System.NullReferenceException: referencia de objeto no establecida en una instancia de un objeto. en Microsoft.SharePoint.SPListItem.get_UniqueId () en ConsoleApplication1.Program.Main (String [] args) en Program.cs: línea 21

ejecutando el siguiente código

using (SPSite site = new SPSite("http://site/")) { using (SPWeb web = site.OpenWeb()) { try { SPList list = web.Lists["ListName"]; // 2 SPListItem item = list.Items.Add(); Guid itemId = item.UniqueId; SPListItem itemUpdate = web.Lists["ListName"].Items[itemId]; itemUpdate["PercentComplete"] = .45; // 45% itemUpdate.Update(); } catch (Exception e) { Console.WriteLine(e); Console.ReadLine(); } } }

¿Cuál es el problema?


La respuesta de Ruben fue correcta, pero estaba recibiendo pocos errores (puede ser que fue solo para mí), por lo tanto, pellizqué un poco y luego funcionó bien. A continuación está el código que utilicé si alguien lo necesita

SPList list = web.Lists["ListName"]; //SPListItem item = list.Items.Add(); //item["PercentComplete"] = .45; // 45%//item.Update(); SPQuery oQuery = new SPQuery(); oQuery.Query = @"<Where> <Eq> <FieldRef Name=''Title'' /> <Value Type=''Text''>Design</Value> </Eq> </Where>"; SPListItemCollection collListItems = list.GetItems(oQuery); foreach (SPListItem item in collListItems) { item["PercentComplete"] = .55; item.Update();}


Intente llamar a Update () en la lista antes de obtener UniqueID

SPList list = web.Lists["ListName"]; // 2 SPListItem item = list.Items.Add(); item["Title"] = "Test"; item.Update (); list.Update (); Guid itemId = item.UniqueId;


Si intentas modificar los valores de un elemento de la lista recién insertado, debes ir con:

SPList list = web.Lists["ListName"]; //SPListItem item = list.Items.Add(); //item["PercentComplete"] = .45; // 45% //item.Update(); SPListItemCollection items = list.GetItems(new SPQuery() { Query = @"<Where> <Eq> <FieldRef Name=''Title'' /> <Value Type=''Text''>Desigining</Value> </Eq> </Where>" }); foreach (SPListItem item in items) { item["PercentComplete"] = .45; // 45% item.Update(); }

Solo necesita usar list.Items[uniqueId] o una list.GetItemByUniqueId(uniqueId) más list.GetItemByUniqueId(uniqueId) si necesita encontrar un elemento en particular para actualizar; qué se puede lograr utilizando la clase SPQuery .


Mi mejor pregunta es que su artículo aún no se ha creado en la lista cuando lo hace:

Guid itemId = item.UniqueId; SPListItem itemUpdate = web.Lists["ListName"].Items[itemId];

Primero haga un item.Update () antes de solicitar el uniqueId y / o recuperar el elemento de una lista.

PD: No veo ninguna razón por la cual deba obtener un segundo objeto SPItem para actualizar la información ''PercentComplete''.