2

私の WPF アプリケーションでは、データグリッドでデータベースを参照しています。私のコードのポイントは、選択したセルの内容をデータグリッドに保存して、さらなる操作のために値のリストに保存することです。私のコードは、12 未満の選択されたアイテムに対してはうまく機能しますが、それ以上のアイテムに対してNullRefferenceExceptionは、「

オブジェクト参照がオブジェクト インスタンスに設定されていません"。

ご協力ありがとう御座います。

コード:

List<string> graphValue = new List<string>(dataGrid1.SelectedItems.Count); //create list 
IList someList = new ArrayList(dataGrid1.SelectedItems); //define Ilist
DataGridColumn dataGridCol = dataGrid1.Columns[listBox1.SelectedIndex]; 
//select column whom i wana collect data

if (dataGrid1.SelectedItems != null)    //when selection applied..
{
   for (int i = 0; i < dataGrid1.SelectedItems.Count; i++) //go row by row in selected column above
   {
      try
      {
         id = ((TextBlock)dataGridCol.GetCellContent(someList[i])).Text.ToString(); //save cell content to string
         graphValue.Add(id); //add value to Ilist
      }

      catch (Exception ex)
      { 
         System.Windows.MessageBox.Show(ex.Message, "error"); }
      }
    }
  }
4

3 に答える 3

1

この単純なコードはあなたを助けるかもしれません ここで最初に Data-grid の各レコードをループしてから、 Row と Column as を提供することにより、ループで特定のセル/列データを選択します..

for(int row =0; row < dg_CountInventory.Rows.Count; row ++)
{
TextBlock b = dg_CountInventory.Columns[1].GetCellContent(dg_CountInventory.Items[row ]) as TextBlock;
}
于 2015-01-02T10:48:14.323 に答える
0

あなたがあなたを定義するsomeListとき

IList someList = new ArrayList(dataGrid1.SelectedItems);

実際にはArrayList、すべての値がであるを作成しますnull。その後、それをGetCellContent()使用してメソッドをアーカイブしようとします。

dataGridCol.GetCellContent(someList[i])).Text

someList[i]おそらくnull、それがあなたが得る理由ですNullRefferenceException。使用する前に、この配列のいくつかの値を追加してください。

于 2013-03-06T22:35:33.863 に答える
0

私はグーグルしていて、私のための解決策を見つけました。ここで他の人にあげます。前のコードアッパーで私が間違ったことを誰かが私に説明してくれれば幸いです。

このコードは私のために働きます:

if (dataGrid1.SelectedItems.Count > 0)    //when selection applied..
  {
   for (int i = 0; i < dataGrid1.SelectedItems.Count; i++) //go row by row in selected column above
      {
       try
         {
          System.Data.DataRowView selectedFile = (System.Data.DataRowView)dataGrid1.SelectedItems[i];
          string str = Convert.ToString(selectedFile.Row.ItemArray[listBox1.SelectedIndex]);
          graphValue.Add(str);
         }
       catch (Exception ex)
         { System.Windows.MessageBox.Show(ex.Message, "error"); }
      }

DataGridこれで、10行より多くの行を選択できるようになりました。参照先:http: //www.codeproject.com/Questions/119505/Get-Selected-items-in-a-WPF-datagrid これで、本当に満足しています。ありがとうございました。あなたの時間。

于 2013-03-07T11:41:43.817 に答える