2009-10-16 9 views
8

Je suis erreur suivante ...Mise à jour Sharepoint article

System.NullReferenceException: référence d'objet non définie à une instance d'un objet. à Microsoft.SharePoint.SPListItem.get_UniqueId() à ConsoleApplication1.Program.Main (String [] args) dans Program.cs: ligne 21

course code suivant

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

     } 
    } 
} 

Quel est le problème ?

+0

Je ne suis pas sûr de problème réel, sharepointer; Quelle tâche essayez-vous d'accomplir? –

Répondre

10

Si vous essayez de modifier les valeurs pour un élément de liste juste inséré, vous devriez aller avec:

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

Vous avez juste besoin d'utiliser list.Items[uniqueId] ou plus rapidement list.GetItemByUniqueId(uniqueId) si vous avez besoin de trouver un élément particulier à mettre à jour; ce qui peut être accompli en utilisant la classe SPQuery.

+0

MERCI BEAUCOUP! Je vous remercie! Je vais essayer maintenant et laissez-vous savoir. J'apprécie vraiment –

+2

J'ai eu quelques erreurs mais j'ai réussi à les corriger en regardant la classe SPQuery pour le site MS. Encore une fois merci pour toute votre aide! j'apprécie beaucoup! –

1

Essayez d'appeler Update() sur la liste avant d'obtenir le UniqueID

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

Merci! pour changer le nom. il me donne la même erreur System.NullReferenceException: Référence d'objet non définie sur une instance d'un objet ect. à Microsoft.SharePoint.SPListItem.get_UniqueId() à ConsoleApplication1.Program.Main (String [] args) dans C: \ Inetpub \ wwwroot \ ...... \ Program.cs: ligne 22 –

+0

Exemple modifié pour définir une propriété factices et appelez Update() sur l'élément avant d'aller chercher l'Id, n'ont pas de MOSS ici pour tester, mais cela devrait fonctionner. –

+0

fonctionne mais crée une nouvelle entrée plutôt que de la mettre à jour. ce que je voulais vraiment, c'était mettre à jour l'entrée existante –

4

La réponse de Ruben était correcte mais obtenait peu d'erreurs (peut-être que c'était seulement pour moi) donc j'ai tordu peu peu et alors cela fonctionnait bien. Voici le code que j'ai utilisé si quelqu'un a besoin

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

Mon meilleur quess est que votre article n'a pas encore été dans la liste lorsque vous faites:

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

d'abord faire un item.Update() avant de demander l'uniqueId et/ou de récupérer l'élément d'une liste. PS: Je ne vois pas pourquoi vous devriez obtenir un deuxième objet SPItem pour mettre à jour les informations 'PercentComplete'.

+0

merci :) - des idées sur http://stackoverflow.com/questions/1588019/programmatically-insert-a-list-as-a-webpart-in-a-webpart-page-in-wss-3-0 S'il vous plaît? –

Questions connexes