(.NET 2.0,System.Windows.FormsDataGridView和DataTable)
我有1个数据网格连接到1个数据表。
该数据表包含1列:包含我自己的“MyObject”类型的对象 MyObject有一个 public 字符串属性“MyProp”。
我想在网格中显示1列:显示表格中MyObjects属性MyProp的字符串值。
但我似乎无法让它发挥作用。
示意性地:
:1 DataGridViewTextBoxColumn
试用1:
Column.DataPropertyName =“Obj”(默认生成)
显示(重写)MyObject.ToString()的结果 不是我想要的,这个函数用于记录。
GridViewColumn.DataPropertyName =“Obj.MyProp”
不显示任何内容(MyProp的 get 永远不会被调用)
使MyProp属性可绑定:
[Bindable (BindableSupport.Yes)]
public string MyProp
{ ...
Samesame,与tryout 2
没有什么不同简而言之:
GridViewColumn.DataPropertyName似乎不支持向下钻取到数据表列中的对象。
任何想法?
提前致谢!
扬
答案 0 :(得分:1)
尝试将Obj.MyProp字符串值放入数据表行。将对象放入其中将需要将其转换为字符串表示形式(Obj.ToString()),它将获得您正在看到的输出。
数据表很像电子表格,而不像数组(Of Objects)。你必须这样对待它。
答案 1 :(得分:0)
您只能绑定到数据源的直接属性。对于DataTable
,这意味着列。跳过两个选择:
DataTable
- 只需使用List<MyObject>
或BindingList<MyObject>
MyObject.ToString()
以返回MyProp
第二个不是很灵活 - 我会选择第一个。毕竟,1列DataTable
真正为你做了什么?
答案 2 :(得分:0)
这可以通过OnRowDataBound事件来完成。
在gridview
中声明一个onrowdatabound方法
使用模板
在方法中:
抓住对象
根据需要填充或操纵显示
您也可以使用模板而不是默认布局来执行您想要的操作。