绑定到DataTable时,DataGridView显示空单元格

时间:2009-09-29 15:06:18

标签: c# .net winforms datagridview datatable

我正在创建一个简单的应用程序,只需使用强类型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 个答案:

答案 0 :(得分:1)

dvwBrowser列使用的是用户定义的类型(INode),而不是基本.NET Framework数据类型和Byte []之一。 INode必须至少由SerializableAttribute标记。您将找到进一步的解释here(在页面底部,代码示例之前。)