代码之家  ›  专栏  ›  技术社区  ›  jan

DataGridView-DataTable-显示属性

  •  0
  • jan  · 技术社区  · 17 年前

    (.NET 2.0、System.Windows.FormsDataGridView和DataTable)

    该数据表包含1列:包含我自己类型“MyObject”的对象。
    平民的 字符串属性“MyProp”。

    我想在网格中显示1列:显示表中MyObject的属性MyProp的字符串值。

    示意图:

    • myTable.Column1.Name:“Obj”
    • myBindingSource.datasource=myDataSet
    • myDataGridView.DataSource=myBindingSource
    • 在myDataGridView中:1 DataGridViewTextBoxColumn

    • 试用期1:

    显示(重写)MyObject.ToString()的结果 这不是我想要的,这个函数用于日志记录。

    • 试用2:

    不显示任何内容(MyProp的 收到

    • 试用3: 使MyProp属性可绑定:

      [Bindable (BindableSupport.Yes)]
      public string MyProp
      { ...
      

      Samesame,与试用2没有什么不同

    GridViewColumn.DataPropertyName似乎不支持 数据表列中的对象。

    有人有什么想法吗?

    提前谢谢!

    3 回复  |  直到 17 年前
        1
  •  1
  •   StingyJack    17 年前

    尝试将Obj.MyProp字符串值放入datatable行。将对象放入其中需要将其转换为字符串表示形式(Obj.ToString()),从而获得所看到的输出。

    数据表很像电子表格,而不像(对象的)数组。你必须这样对待它,。

        2
  •  0
  •   Marc Gravell    17 年前

    只能绑定到数据源的即时属性。对于 DataTable

    • 不要使用 数据表 List<MyObject> BindingList<MyObject>
    • (或)覆盖 MyObject.ToString() MyProp

    第二个不是很灵活,我会选择第一个。毕竟,什么是1列 真的为你做了什么?

        3
  •  0
  •   mson    17 年前

    这可以通过OnRowDataBound事件完成。

    1. 声明onrowdatabound方法

    2. 使用模板

    1. 抓取对象

    您还可以使用模板而不是默认布局来完成所需的操作。