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''.