2009-10-16 43 views
8

私は、次しまったのエラーが...更新Sharepointのリスト項目

System.NullReferenceException:オブジェクト参照がオブジェクトインスタンスに設定されていません。コード

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

     } 
    } 
} 

問題は何次の行21

ランニング:Program.csの中ConsoleApplication1.Program.MainでMicrosoft.SharePoint.SPListItem.get_UniqueId() (文字列[] args)をで ?

+0

私は本当の問題、sharepointerについてはわかりません。あなたはどんな仕事を達成しようとしていますか? –

答えて

10

を取得する前に、リスト上のアップデートを()を呼び出してみてください。

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

更新する特定のアイテムを見つける必要がある場合は、list.Items[uniqueId]またはそれより速くlist.GetItemByUniqueId(uniqueId)を使用するだけです。 SPQueryクラスを使用して達成できること

+0

大変ありがとうございました!ありがとうございました!今それを試し、あなたに知らせてくれるでしょう。本当に感謝します –

+2

私はいくつかのエラーがありましたが、私はMSウェブサイトのSPQueryクラスを見て修正することができました。もう一度あなたの助けをありがとう!心から感謝する! –

1

挿入したリスト項目の値を変更しようとしている場合は、あなたが一緒に行く必要があるのUniqueID

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

ありがとう!名前を変更する。それは私に同じエラーを与える System.NullReferenceException:オブジェクト参照がobj の例に設定されていません。 をMicrosoft.SharePoint.SPListItem.get_UniqueId() でConsoleApplication1.Program.Main(String [] args)C:\ Inetpub \ wwwroot \ ...... \ Program.cs:行22 –

+0

変更する設定例ダミーのプロパティと呼び出す前に項目のUpdate()を呼び出す前に、テストするMOSSはありませんが、それは動作するはずです。 –

+0

は動作しますが、更新するのではなく新しい新しいエントリを作成します。私が実際に望んでいたのは、元のエントリを更新することでした。 –

4

ルーベンの答えは正しいものの、少しの誤差が出ていた(それは私のためだけだったかもしれない)ので少し微調整してうまくいきました。以下は、私は誰もがそれを必要とする場合に使用するコードです

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

私の最高quessは、あなたのアイテムがまだあなたがリスト内に作成されていないされていること:

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

まずitem.Updateを行いますuniqueIdを要求したり、リストからアイテムを戻したりする前に、()を呼び出してください。

PS: 'PercentComplete'情報を更新するための2番目のSPItemオブジェクトを取得する理由はありません。

+0

ありがとう:) - 任意のアイデアについてのhttp://stackoverflow.com/questions/1588019/programmatically-insert-a-list-as-a-webpart-in-a-webpart-page-in-wss-3-0お願いします? –

関連する問題