2009-10-16 24 views
8

Me siguiente error ...Actualizar lista de Sharepoint artículo

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

consecutivo 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 ?

+0

No estoy seguro sobre el problema REAL, sharepointer; ¿Qué tarea estás tratando de lograr? –

Respuesta

10

Si usted está tratando de alterar los valores para un elemento de lista se acaba de insertar, hay que 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 más rápido list.GetItemByUniqueId(uniqueId) si necesita encontrar un artículo en particular para actualizar; lo que se puede lograr utilizando la clase SPQuery.

+0

¡MUCHAS GRACIAS! ¡gracias! lo intentaré ahora y le haremos saber. realmente lo aprecio –

+2

tuve algunos errores, pero logré solucionarlos mirando la clase SPQuery para el sitio web de MS. ¡Una vez más, gracias por toda tu ayuda! ¡realmente lo aprecio! –

1

intentar llamar a Update() en la lista antes de conseguir el UniqueID

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

¡Gracias! para cambiar el nombre me da el mismo error System.NullReferenceException: referencia de objeto no establecida en una instancia de un obj ect. en Microsoft.SharePoint.SPListItem.get_UniqueId() en ConsoleApplication1.Program.Main (String [] args) en C: \ Inetpub \ wwwroot \ ...... \ Program.cs: línea 22 –

+0

Ejemplo modificado para establecer una propiedad ficticia y llame a Update() en el ítem antes de obtener Id, no tiene un MOSS aquí para probar, pero debería funcionar. –

+0

funciona pero crea una nueva entrada nueva en lugar de actualizarla. lo que realmente quería era actualizar la entrada existente –

4

La respuesta de Ruben fue correcta pero recibía pocos errores (puede ser que fue solo para mí), por lo tanto, pellizqué un poco y luego funcionó bien. A continuación se muestra 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();} 
0

Mi mejor quess es que su artículo todavía no está creado en la lista cuando lo hace:

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

En primer lugar hacer una item.Update() antes de solicitar el ID exclusivo y/o recuperar el elemento de una lista.

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

+0

gracias :) - cualquier idea sobre http://stackoverflow.com/questions/1588019/programmatically-insert-a-list-as-a-webpart-in-a-webpart-page-in-wss-3-0 ¿Por favor? –

Cuestiones relacionadas