DataGridViewComboBoxColumn值无效

1.必须确定,给DataVridView赋值,是在DataGridViewComboBox已经绑定了内容之后.
 说明:此方法亲身经历过。

2.关于数据类型不一样的问题,如果是数值型字符和数值型数据,则在绑定后,会出现"System.ArgumentException:DagaGridViewComboBoxCell值無效"的錯誤
 解决方法:在构造函数中增加以下代码:
 InitializeComponent();
 //处理掉DataGridViewComboBoxColumn绑定数据源后,再绑定到DataTable中的Column时,提示"System.ArgumentException:DagaGridViewComboBoxCell值无效"的错误
 this.dataGridView1.DataError += delegate(object sender, DataGridViewDataErrorEventArgs e) { };

3.DataGridView中发生以下异常  System.ArgumentException:DataGridViewComboBoxCell值无效
 要替换此默认对话框,请处理DataError事件
 
 在构造函数中增加以下代码:
 InitializeComponent();
 //处理掉DataGridViewComboBoxColumn绑定数据源后,再绑定到DataTable中的Column时,提示"System.ArgumentException:DagaGridViewComboBoxCell值无效"的错误
 this.dataGridView1.DataError += delegate(object sender, DataGridViewDataErrorEventArgs e) { };

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/cnjack/archive/2009/09/17/4561376.aspx

``` public partial class FrmTLConfig : Form { public FrmTLConfig() { InitializeComponent(); dgv_TowerLight.AllowUserToAddRows = false; // 禁止添加新行 dgv_TowerLight.AllowUserToDeleteRows = false;// 禁止删除已有行 UpdateTLConfigUi(); } private void UpdateTLConfigUi() { var dataSource = ParamManager.Instance.LocalParam.TowerLightConfigurationParam.ConfigurationModels; if (dataSource != null) { dgv_TowerLight.DataSource = new BindingList<TowerLightConfigurationModel>(dataSource); } //dgv_TowerLight.AutoGenerateColumns = false; // 禁用自动生成列 // 记录需要替换的列名 List<string> columnsToReplace = new List<string>(); // 获取列名 foreach (DataGridViewColumn column in dgv_TowerLight.Columns) { if (column.Name == "MachineStatus") { continue; } columnsToReplace.Add(column.Name); } //替换列 foreach (string columnName in columnsToReplace) { ReplaceColumn(columnName); } // 同步下拉框的选中 //SyncComboBoxValues(); } private void ReplaceColumn(string columnName) { // 创建一个 DataGridViewComboBoxColumn DataGridViewComboBoxColumn comboCol = new DataGridViewComboBoxColumn { Name = columnName, HeaderText = columnName, DataPropertyName = columnName, DataSource = Enum.GetValues(typeof(TLState)), // 绑定枚举数据源 ValueType = typeof(TLState) }; // 替换原有列(或添加新列) int index = dgv_TowerLight.Columns.Contains(columnName) ? dgv_TowerLight.Columns[columnName].Index : dgv_TowerLight.Columns.Count; if (dgv_TowerLight.Columns.Contains(columnName)) { dgv_TowerLight.Columns.RemoveAt(index); } dgv_TowerLight.Columns.Insert(index, comboCol); } private void btn_Save_Click(object sender, EventArgs e) { // 保存逻辑 for (int rowIndex = 0; rowIndex < dgv_TowerLight.Rows.Count; rowIndex++) { DataGridViewRow row = dgv_TowerLight.Rows[rowIndex]; TowerLightConfigurationModel model = (TowerLightConfigurationModel)dgv_TowerLight.Rows[rowIndex].DataBoundItem; foreach (DataGridViewColumn column in dgv_TowerLight.Columns) { if (column.Name == "MachineStatus") { continue; } DataGridViewComboBoxCell comboBoxCell = (DataGridViewComboBoxCell)row.Cells[column.Name]; typeof(TowerLightConfigurationModel).GetProperty(column.Name).SetValue(model, comboBoxCell.Value); } } } } dgv_TowerLight绑定的是数据库的数据,界面加载时会出现DataGridViewComboBoxCell无效```dgv_TowerLight绑定的是数据库的数据,界面加载时会出现DataGridViewComboBoxCell无效
03-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值