C# 如何在一个Datagridview 的 某一个cell里面 绑定一个自定义的combobox

请教大家一个问题:我定义了一个datagridview,在第一列有个下拉框,从业务需求的角度上来说,第一个下拉框的值改变的话要触发一个事件,就是动态的选定一个combob... 请教大家一个问题:
我定义了一个datagridview,在第一列有个下拉框,从业务需求的角度上来说,第一个下拉框的值改变的话要触发一个事件,就是动态的选定一个combobox(有两个combobox)绑定到 值改变的下拉框所在行的第二列.
就是说我要动态的把combobox绑定到某一个指定的datagridview的cell里面.希望牛人帮手,叩谢!!
谢谢你的回答.
我今天已经想到解决方法了.
用CellEndEdit事件触发函数去响应cell值的改变.
combbox绑定的问题,我把datagridview的那一列定义成DataGridViewComboBoxColumn,然后再把指定cell强制转换为datagridviewcomboboxcell就可以绑定数据了.
展开
 我来答
cnmahj
推荐于2016-11-25 · TA获得超过954个赞
知道小有建树答主
回答量:785
采纳率:0%
帮助的人:1068万
展开全部
// 你可以在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();
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式