用CellEndEdit事件觸發函數去響應cell值的改變.
combbox綁定的問題,我把datagridview的那一列定義成DataGridViewComboBoxColumn,然後再把指定cell強制轉換為datagridviewcomboboxcell就可以綁定資料了.
// 你可以在DataGridView的EditingControlShowing事件中加入如下代碼,來給你的ComboxBox加一個事件,在這個事件中處理綁定的問題。
private void variousCostDgv3_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control.GetType().Equals(typeof(DataGridViewComboBoxEditingControl)))
{
DataGridViewComboBoxEditingControl editingControl = e.Control as DataGridViewComboBoxEditingControl;
editingControl.DropDownClosed += new EventHandler(editingControl_DropDownClosed);
}
}
// 然後,在這個事件處理函數中做綁定的處理,我這段代碼是動態改變一個cell的值,並修改對齊。你可以改成綁定新Cell的操作。
private void editingControl_DropDownClosed(object sender, EventArgs e)
{
DataGridViewComboBoxEditingControl ctl = sender as DataGridViewComboBoxEditingControl;
DataRowView drv = this.variousCostDgv3.Rows[ctl.EditingControlRowIndex].DataBoundItem as DataRowView;
drv["unit_name"] = ctl.Text;
drv["VARIOUS_COST_UNIT"] = CommonDataManager.GetChargeUnitData().GetCD(ctl.Text);
if (CommonDataManager.GetChargeUnitData().GetCD(ctl.Text).Equals(EstimateCommon.CHARGE_UNIT_ALL))
{
drv["number"] = "-";
drv["PEOPLE_NUM"] = 1;
this.variousCostDgv3["numberCol3", ctl.EditingControlRowIndex].ReadOnly = true;
this.variousCostDgv3["numberCol3", ctl.EditingControlRowIndex].Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
}
else
{
drv["number"] = drv["PEOPLE_NUM"];
if (EstimateCommon.ESTIMATE_TYPE_REAL.Equals(mDsForInternal.Tables["CZ_ESTIMATE"].Rows[0]["ESTIMATE_TYPE"].ToString()))
{
this.variousCostDgv3["numberCol3", ctl.EditingControlRowIndex].ReadOnly = false;
}
this.variousCostDgv3["numberCol3", ctl.EditingControlRowIndex].Style.Alignment = DataGridViewContentAlignment.MiddleRight;
}
this.variousCostDgv3.Refresh();
}