2009-09-29 62 views
0

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

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

我怎样才能得到显示在细胞中的ToString()方法的价值时,我将DataTable绑定到DataGridView?

回答

1

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

+0

感谢您的回答,我决定创建一个未绑定的DataGridView,并将ToString()的值粘贴到Grid中,那么只需将DataTable作为表单的成员变量并根据需要引用即可 – RobV 2009-10-01 10:10:13