WPF数据网格错误:NullReferenceException,如何从数据网格中的每个单元中获取数据
本文关键字:数据 网格 数据网 获取 单元 错误 NullReferenceException WPF | 更新日期: 2023-09-27 18:19:20
我有一个WPF程序,从数据网格中获取数据。但是这个程序总是显示错误:NullReferenceException未被用户代码处理。对象引用未设置为对象的实例
有什么问题吗?下面是代码
private string GetDatagrid(DataGrid grid)
{
var data = (ObservableCollection<ConfigViewModel>)grid.ItemsSource;
StringBuilder dataStr = new StringBuilder();
for (int i = 0; i < data.Count; i++)
{
for (int j = 0; j < grid.Columns.Count; j++)
{
TextBlock selectTextBlockInCell = grid.Columns[j].GetCellContent(data[i]) as TextBlock;
string configVari= selectTextBlockInCell.Text; //This line comes the error!
dataStr.Append(configVari);
dataStr.Append("#");
}
dataStr.Remove(dataStr.Length - 1, 1);
dataStr.Append(@"''");
}
return dataStr.ToString();
}
看起来这个来自另一个SO帖子的答案可能会奏效。
获取数据网格的行。
public IEnumerable<Microsoft.Windows.Controls.DataGridRow> GetDataGridRows(Microsoft.Windows.Controls.DataGrid grid)
{
var itemsSource = grid.ItemsSource as IEnumerable;
if (null == itemsSource) yield return null;
foreach (var item in itemsSource)
{
var row = grid.ItemContainerGenerator.ContainerFromItem(item) as Microsoft.Windows.Controls.DataGridRow;
if (null != row) yield return row;
}
}
然后遍历。
var rows= GetDataGridRows(nameofyordatagrid);
foreach (DataGridRow r in rows)
{
DataRowView rv = (DataRowView)r.Item;
foreach (DataGridColumn column in nameofyordatagrid.Columns)
{
if (column.GetCellContent(r) is TextBlock)
{
TextBlock cellContent = column.GetCellContent(r) as TextBlock;
MessageBox.Show(cellContent.Text);
}
}