DataGridViewComboBoxColumn 绑定对象集合时存在BUG?
2006-08-28 10:51
555 查看
DataGridview 绑定的是对象集合,里面有一列是下拉列表,也用集合绑定,一切看上去很美好,可是当我改变选择下拉列表时,却发生BUG。字符串不能转成对象!不知是DataGridview里的对应的下拉列表列保存的是字符串,还是下拉列表保存的是字符串。
public override object ParseFormattedValue(object formattedValue, DataGridViewCellStyle cellStyle, TypeConverter formattedValueTypeConverter, TypeConverter valueTypeConverter)
这下好了,出现了新的问题
public override object ParseFormattedValue(object formattedValue, DataGridViewCellStyle cellStyle, TypeConverter formattedValueTypeConverter, TypeConverter valueTypeConverter)
internal object ParseFormattedValueInternal(Type valueType, object formattedValue, DataGridViewCellStyle cellStyle, TypeConverter formattedValueTypeConverter, TypeConverter valueTypeConverter)
在方法ParseFormattedValueInternal 里有一个属性: this.FormattedValueType 是字符串型,而我传进去的已经变成了对象型了,所以在这里报错了。
属性 FormattedValueType覆盖了基类, 这里已经变成了字符串类型
public override Type FormattedValueType
{
get
{
return DataGridViewComboBoxCell.defaultFormattedValueType;
}
}
于是用这个基类里 FormattedValueType重新覆盖。结果错误是没有了,可下拉列表列全是空白。不过我点击下拉列表,却是程序需要的选择。看来显示又出现了问题.
最后的解决方法是:BizObject 是我对象的基类
public override object ParseFormattedValue(object formattedValue, DataGridViewCellStyle cellStyle, TypeConverter formattedValueTypeConverter, TypeConverter valueTypeConverter)
{
ComboBox comboBox = base.DataGridView.EditingControl as ComboBox;
formattedValue = (BizObject)comboBox.SelectedItem;
return formattedValue;
}
虽然没有问题了,但是直接反回而忽略其它几个参数,感觉不是很自然。不知大家有没有更好的方法。
public override object ParseFormattedValue(object formattedValue, DataGridViewCellStyle cellStyle, TypeConverter formattedValueTypeConverter, TypeConverter valueTypeConverter)
这下好了,出现了新的问题
public override object ParseFormattedValue(object formattedValue, DataGridViewCellStyle cellStyle, TypeConverter formattedValueTypeConverter, TypeConverter valueTypeConverter)
internal object ParseFormattedValueInternal(Type valueType, object formattedValue, DataGridViewCellStyle cellStyle, TypeConverter formattedValueTypeConverter, TypeConverter valueTypeConverter)
在方法ParseFormattedValueInternal 里有一个属性: this.FormattedValueType 是字符串型,而我传进去的已经变成了对象型了,所以在这里报错了。
属性 FormattedValueType覆盖了基类, 这里已经变成了字符串类型
public override Type FormattedValueType
{
get
{
return DataGridViewComboBoxCell.defaultFormattedValueType;
}
}
这个defaultFormattedValueType值就不知从哪里设来的了。 然而基类 FormattedValueType类里的this.ValueType而反是我需要的对象的类型。 [Browsable(false)] public virtual Type FormattedValueType { get { return this.ValueType; } }
于是用这个基类里 FormattedValueType重新覆盖。结果错误是没有了,可下拉列表列全是空白。不过我点击下拉列表,却是程序需要的选择。看来显示又出现了问题.
最后的解决方法是:BizObject 是我对象的基类
public override object ParseFormattedValue(object formattedValue, DataGridViewCellStyle cellStyle, TypeConverter formattedValueTypeConverter, TypeConverter valueTypeConverter)
{
ComboBox comboBox = base.DataGridView.EditingControl as ComboBox;
formattedValue = (BizObject)comboBox.SelectedItem;
return formattedValue;
}
虽然没有问题了,但是直接反回而忽略其它几个参数,感觉不是很自然。不知大家有没有更好的方法。
相关文章推荐
- DataGridViewComboBoxColumn绑定数据库显示
- 关于DataGridViewComboBoxColumn的进阶绑定问题
- DataGridView 绑定 DataGridViewComboBoxColumn 空白问题
- c# 在datagridview中添加comboboxcolumn 绑定数据库读取显示数据
- DataGridView 控件中轻松设置DataGridViewComboBoxColumn数据绑定属性。
- C# DataGridView 添加DataGridViewComboBoxColumn列后绑定数据
- ComboBox或DataGridViewComboBoxColumn绑定到数据源
- DataGridView如何绑定DataRow对象集合
- DataGridView中comboBox(DataGridViewComboBoxColumn)的数据绑定
- datagridview (三)DataGridViewComboBoxColumn 列或者DataGridViewComboBoxCell 赋值绑定数据的方法
- DataGridView嵌入comboBox以及DataGridViewComboBoxColumn数据绑定
- DataGridview中DataGridViewComboBoxColumn数据绑定的问题
- C# 中绑定数据到datagridviewcomboboxcolumn
- 在VS2008中DataGridView控件里DataGridViewComboBoxColumn列的Bug
- DataGridView绑定数据,同时绑定DataGridViewComboBoxColumn列的值
- C# Winform中DataGridView绑定后DataGridViewCheckBoxColumn无法显示的问题
- WinForm控件复杂数据绑定常用数据源(如:Dictionary)(对Combobox,DataGridView等控件DataSource赋值的多种方法)
- c# winform 之DataGridViewComboBoxColumn的使用
- datagridview,textbox,combobox的数据绑定,数据赋值,picturebox的用法
- 20161014006 DataGridView Combobox 数据绑定与传值