在我的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"); }
}
}
}
答案 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
现在我真的很开心,谢谢大家的时间。