【问题标题】:How to loop the column in a WPF datagrid, get data from each cell如何循环 WPF 数据网格中的列,从每个单元格获取数据
【发布时间】:2014-08-25 09:13:05
【问题描述】:

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

我认为原因可能是我不应该使用“grid.Columns[j].GetCellContent(data[i]) as TextBlock”。我认为我应该从 ItemsSource 中获取该列,而不是从数据网格中获取。

我知道 "int i = 0; i

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

【问题讨论】:

  • 那是因为 grid.Columns[j].GetCellContent(data[i]) 没有返回一个TextBlock,尝试调试并检查它返回什么类型

标签: c# wpf datagrid


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2014-02-12
    • 1970-01-01
    相关资源
    最近更新 更多