从指定列和行中的datagrid收集数据

时间:2013-03-06 22:27:19

标签: c# wpf datagrid

在我的WPF应用程序中,我在数据网格中浏览数据库。我的代码的重点是将datagrid中的选定单元格内容存储到某些值列表以供进一步操作。我的代码适用于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"); }
      }
    }
  }

3 个答案:

答案 0 :(得分:1)

这个简单的代码可以帮助你首先我们将遍历数据网格的每个记录然后通过提供行选择特定的单元格/列数据,并选择列作为..

for(int row =0; row < dg_CountInventory.Rows.Count; row ++)
{
TextBlock b = dg_CountInventory.Columns[1].GetCellContent(dg_CountInventory.Items[row ]) as TextBlock;
}

答案 1 :(得分:0)

使用

定义someList
IList someList = new ArrayList(dataGrid1.SelectedItems);

您实际创建的ArrayList的所有值均为null。之后,您尝试使用它存档GetCellContent()方法。

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

someList[i]可能是null,这就是您获得NullRefferenceException的原因。在使用之前添加此数组的一些值。

答案 2 :(得分: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 现在我真的很开心,谢谢大家的时间。