【问题标题】:Access cell data in a DataGrid访问 DataGrid 中的单元格数据
【发布时间】:2014-03-16 23:42:32
【问题描述】:

似乎是一件非常简单的事情,但所有的研究和我尝试过的一切似乎都不起作用。我正在使用 VS2013 和 .Net 4.5

我有一个不使用数据绑定的 2 列 WPF DataGrid。网格已经填充了 SQLCE 表中的数据,我想选择一行并将所选行的第 0 列单元格中的数据作为字符串返回。

我可以看到调试监视窗口中有数据

我只是不知道如何访问该值以便可以使用它。

    private void dgPickList_MouseDoubleClick( object sender, MouseButtonEventArgs e )
    {
        selectItem();
        this.Close();
    }

    private void selectItem()
    {
        _pickedItem = dgPickList.SelectedItem.ToString();
    }

这段代码显然不能很好地工作,但它确实让我看到了 Non-Public members _values 字段中的单元格数据。

非常感谢任何帮助。

杰夫

【问题讨论】:

    标签: c# wpf datagrid cell


    【解决方案1】:

    SelectedItem 转换回您在网格中填充的原始类型。

    例如,如果您使用 DataTable,则转换为 DataRow 并获取第一列(这里我假设它是一个表示唯一 ID 的整数类型):

    var id = ((DataRow)dgPickList.SelectedItem).Field<int>(0);
    

    如果您使用的是自定义类的集合,这样的方法应该可以工作:

    var id = ((MyClass)dgPickList.SelectedItem).Id;
    

    【讨论】:

      【解决方案2】:

      改用 DataGrid.SelectedCells。这将返回一个选定单元格的集合,您可以在其中找到需要阅读的列。

      例如:

      var celldata=dataGrid1.SelectedCells[0];
      var val=celldata.Column.GetCellContent(celldata.Item);
      

      【讨论】:

      • 这真的让我大吃一惊,但根据你的信息,我偶然发现了一些有用的东西。我不确定为什么其他方式没有完成这项工作。使用您的示例,我能够深入了解调试信息并查看我想要但仍然无法提取它们的字段。当我设置 DataGrid 时,也许我在做一些奇怪的事情(我不知道是什么)。我正在将数据读入 DataTable。我开始工作的代码: DbDataRecord id = ( DbDataRecord )dgPickList.SelectedItems[0]; _pickedItem = Convert.ToString(id.GetValue(0));
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 2015-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多