2009-10-16 10 views
8

Ich habe folgende Fehler ...Update-Sharepoint-Liste Artikel

System.NullReferenceException: Objektverweis nicht auf eine Instanz eines Objekts festgelegt. bei Microsoft.SharePoint.SPListItem.get_UniqueId() bei ConsoleApplication1.Program.Main (String [] args) in Program.cs: Linie 21

Code folgenden Lauf

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(); 

     } 
    } 
} 

Was ist das Problem ?

+0

Ich bin mir nicht sicher über REAL Problem, Aktienzeiger; Welche Aufgabe versuchen Sie zu erfüllen? –

Antwort

10

Wenn Sie versuchen, Werte für einen gerade eingefügten Listeneintrag zu ändern, sollten Sie gehen mit:

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(); 
} 

Sie müssen nur list.Items[uniqueId] oder schneller list.GetItemByUniqueId(uniqueId) verwenden, wenn Sie einen bestimmten zu aktualisierenden Artikel finden müssen; Was kann erreicht werden, indem SPQuery Klasse verwendet wird.

+0

DANKE SO VIEL! Danke! werde es jetzt versuchen und dich wissen lassen. wirklich schätzen es –

+2

Ich hatte einige Fehler, aber ich habe es geschafft, sie zu beheben, indem Sie auf die SPQuery-Klasse für MS-Website. Nochmals vielen Dank für Ihre Hilfe! Schätze es wirklich! –

1

Try Aufruf Update() auf der Liste, bevor den UniqueID bekommen

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

Danke! um den Namen zu ändern. es gibt mir den gleichen Fehler System.NullReferenceException: Objektreferenz nicht auf eine Instanz eines Obj ect. bei Microsoft.SharePoint.SPListItem.get_UniqueId() bei ConsoleApplication1.Program.Main (String [] args) in C: \ Inetpub \ wwwroot \ ...... \ Program.cs: Zeile 22 –

+0

Modified Beispiel zu setzen eine Dummy-Eigenschaft und Aufruf Update() auf Element vor dem Abrufen von ID, haben keine MOSS hier zum Testen, aber das sollte funktionieren. –

+0

funktioniert, aber erstellt einen neuen neuen Eintrag, anstatt es zu aktualisieren. Was ich eigentlich wollte, war die Aktualisierung des bestehenden Eintrags –

4

Rubens Antwort war korrekt, bekam aber nur wenige Fehler (vielleicht war es nur für mich), also habe ich ein bisschen gezwickt und dann funktionierte es gut. Unten ist der Code, den ich verwendet, wenn jemand es benötigt wird

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

Meine beste quess ist, dass Ihr Artikel noch nicht in der Liste erstellt, wenn Sie tun:

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

zuerst eine item.Update tun() bevor Sie die uniqueId anfordern und/oder das Objekt aus einer Liste zurückholen.

PS: Ich sehe keinen Grund, warum Sie ein zweites SPTem-Objekt zum Aktualisieren der 'PercentComplete' Informationen erhalten sollten.

+0

danke :) - irgendwelche Ideen über http://StackOverflow.com/Questions/1588019/programmatics-insert-a-list-as-a-webpart-in-a-webpart-page-in-wss-3-0 Bitte? –

Verwandte Themen