如何在WPF数据网格中循环列,从每个单元格获取数据

时间:2014-08-25 09:13:05

标签: c# wpf datagrid

我有一个代码来通过循环数据网格的每个单元来获取数据,但代码有错误,"对象引用未设置为对象的实例"。

我认为原因可能是我不应该使用" grid.Columns [j] .GetCellContent(data [i])作为TextBlock"。我想我应该从ItemsScource获取列,而不是从datagrid获取。

我知道" int i = 0;我< data.Count;我++"可以循环每一行,但如何循环每一列,或更准确地说如何从每个单元格获取数据?以下是代码

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();
}

1 个答案:

答案 0 :(得分:0)

gid.cloumns [j] .GetCellContent(Object dataitem)在你的情况下返回Framework元素它可能会返回除TextBlock之外的其他一些控件,所以你的转换不起作用,这就是你的TextBlock没有得到初始化的原因这就是为什么你没有将对象引用设置为对象的实例。另一种可能是您的单元格可能包含空值