如题,我的页面上有两个dgv,这两个dgv都有一列combobox,combobox列绑定了同一个数据源,当我编辑其中一个dgv的combobox的时候他就会报错,错误是 设置 DataSource 属性后无法修改项集合
下面是我绑定combobox的代码private void CreateCustomsRateP() 
        {
            DataTable dt = Basis_CustomsRateManager.Basis_CustomsRateDataTable;
            if (dt.Columns.Contains("Rate"))
            {
                dt.Columns["Rate"].ColumnName = "CustomsRate";
                
                dgvcmbCustomsRate_Pay.DisplayMember = "CustomsRate";
                dgvcmbCustomsRate_Pay.ValueMember = "CustomsRate";
                dgvcmbCustomsRate_Pay.DataSource = dt;
            }
            else
            {
                dgvcmbCustomsRate_Pay.DisplayMember = "CustomsRate";
                dgvcmbCustomsRate_Pay.ValueMember = "CustomsRate";
                dgvcmbCustomsRate_Pay.DataSource = dt;
            }
        }
        /// <summary>
        /// 为税率赋值
        /// </summary>
        private void CreateCustomsRateR()
        {
            DataTable dt = Basis_CustomsRateManager.Basis_CustomsRateDataTable;
            if (dt.Columns.Contains("Rate"))
            {
                dt.Columns["Rate"].ColumnName = "CustomsRate";
                dgvcboCustomsRate_R.DisplayMember = "CustomsRate";
                dgvcboCustomsRate_R.ValueMember = "CustomsRate";
                dgvcboCustomsRate_R.DataSource = dt;
            }
            else 
            {
                dgvcboCustomsRate_R.DisplayMember = "CustomsRate";
                dgvcboCustomsRate_R.ValueMember = "CustomsRate";
                dgvcboCustomsRate_R.DataSource = dt;
            }
        } 
  因为我需要获取combobox的值 所以我注册了一个事件
部分代码,因为两个dgv都一样/// <summary>
        /// 自定义事件,为Edit的cbo添加事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cboEdit_P_SelectedIndexChanged(object sender, EventArgs e)
        {
            int index = dgvCost_FeeInfo_Pay.CurrentCell.RowIndex;
            string money = Convert.ToString(dgvCost_FeeInfo_Pay.Rows[index].Cells["dgvtxtShouldMoney_P"].Value);
            ComboBox cbo = sender as ComboBox;
            
            
            if (CommonMethodHelper.ToDecimal(cbo.Text) > 0)
            {                if (!string.IsNullOrEmpty(money))
                {
                    decimal m = Convert.ToDecimal(money);                    dgvCost_FeeInfo_Pay.Rows[index].Cells["dgvtxtCustomsMoney_P"].Value = m * Convert.ToDecimal(cbo.Text);
                }
            }
            else if (CommonMethodHelper.ToDecimal(cbo.Text) == 0)
            {
                //dgvCost_FeeInfo_Pay.Rows[index].Cells["dgvtxtCustomsMoney_P"].Value = CommonMethodHelper.ToDecimal( money);
                dgvCost_FeeInfo_Pay.Rows[index].Cells["dgvtxtCustomsMoney_P"].Value = 0;
            }
        }