您的位置:首页 > 其它

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;
}
}

这个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;

}

虽然没有问题了,但是直接反回而忽略其它几个参数,感觉不是很自然。不知大家有没有更好的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: