DataGridView 绑定到已键入的 DataTable 时显示空单元格

Posted

技术标签:

【中文标题】DataGridView 绑定到已键入的 DataTable 时显示空单元格【英文标题】:DataGridView displays empty cells when bound to typed DataTable 【发布时间】:2009-09-29 15:06:17 【问题描述】:

我正在创建一个简单的应用程序,它简单地使用强类型 DataTable 填充 DataGridView。我的问题是,尽管包含数据,但所有单元格都显示为空,我有一个 CellDoubleClick 事件,它可以获取单元格的基础值(按预期键入),但列显示为空。

INode 类型的对象都定义了一个 ToString() 方法,我的假设是 DataGridView 足够智能,可以调用该方法,任何显示为单元格内容的方法,但它看起来不是。

这是我当前的测试代码:

        //Add some fake test data
        DataTable data = new DataTable();
        data.Columns.Add("Subject");
        data.Columns.Add("Predicate");
        data.Columns.Add("Object");
        data.Columns["Subject"].DataType = typeof(INode);
        data.Columns["Predicate"].DataType = typeof(INode);
        data.Columns["Object"].DataType = typeof(INode);

        Graph g = new Graph();
        DataRow row = data.NewRow();
        row["Subject"] = g.CreateURINode(new Uri("http://example.org/subject"));
        row["Predicate"] = g.CreateURINode(new Uri("http://example.org/predicate"));
        row["Object"] = g.CreateURINode(new Uri("http://example.org/object"));
        data.Rows.Add(row);
        this.dvwBrowser.DataSource = data;
        this.dvwBrowser.AutoResizeColumns();

当我将 DataTable 绑定到 DataGridView 时,如何获取要在单元格中显示的 ToString() 方法的值?

【问题讨论】:

【参考方案1】:

dvwBrowser 列使用的是用户定义类型 (INode),而不是基本 .NET Framework 数据类型和 Byte[] 之一。 INode 必须至少用SerializableAttribute 标记。你会发现更多的解释here(在页面底部,在代码示例之前。)

【讨论】:

感谢您的回答,我决定只创建一个未绑定的 DataGridView 并将 ToString() 的值粘贴到 Grid 中,然后将 DataTable 保留为表单的成员变量并将其引用为需要

以上是关于DataGridView 绑定到已键入的 DataTable 时显示空单元格的主要内容,如果未能解决你的问题,请参考以下文章

如何刷新绑定到已更新的 Access 数据库表的 DataGridView?

将数据添加到已存在组合框列的 dataGridView 行

把dataGridView数据保存到已有的Excel表中

C#datagridview控件绑定数据库,按照控件提示绑定后运行失败?

如何在已经绑定数据源的datagridview添加一行数据并保存到数据库??

15.2DataGridView绑定数据源的两种方法