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 作为循环选择特定的单元格/列数据。

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 回答