none
DatagridViewComboboxColumn与Enum! RRS feed

  • 问题

  • 我要在DatagridViewComboboxColumn中显示枚举 En 的值,而这个Enum对应数据库的一个Int字段。我在初始化时加入
    Dim combo As DataGridViewComboBoxColumn = CType(TDataGridView.Columns("En"), DataGridViewComboBoxColumn)
            combo.DataSource = [Enum].GetValues(GetType(En))
    但是程序运行的时候提示异常,要我处理DataError事件。
    我以为是类型转换的问题,企图在CellFormatting和CellParsing两个事件转换数据,但这个异常发生在CellFormatting事件之前,我想知道这个异常是为什么引起的,在哪个事件可以捕捉得到,或者哪位高手能给段能实现以上场景的代码示例,谢谢。
    2010年1月22日 17:39

答案

  • 你好 KeavoJoe,

    其实正确的做法应该是数据类型对应的,就是combo.ValueMember对应的字段是Int型才不会有DataError,既然发生了DataError也就说明里面有不合理的设置,所以改变设计是根本的解决方法。

    我建议你把Enum类型里的数据提取出来建一个标准的List<CmbItem>。CmbItem是一个有对应属性的类,放到List泛型里可以用于绑定。

    Sincerely,
    Kira Qian


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework!
    2010年1月28日 8:07

全部回复

  • 绑定DataError事件,但是不写代码
    http://feiyun0112.cnblogs.com/
    2010年1月25日 1:55
    版主
  • 这样感觉程序会有隐患啊,能有更好的解决方法吗?谢谢。

    2010年1月25日 14:15
  • 你好 KeavoJoe,

    其实正确的做法应该是数据类型对应的,就是combo.ValueMember对应的字段是Int型才不会有DataError,既然发生了DataError也就说明里面有不合理的设置,所以改变设计是根本的解决方法。

    我建议你把Enum类型里的数据提取出来建一个标准的List<CmbItem>。CmbItem是一个有对应属性的类,放到List泛型里可以用于绑定。

    Sincerely,
    Kira Qian


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework!
    2010年1月28日 8:07