C# 如何在一个Datagridview 的 某一个cell里面 绑定一个自定义的combobox
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 如何在一个Datagridview 的 某一个cell里面 绑定一个自定义的combobox相关的知识,希望对你有一定的参考价值。
请教大家一个问题:
我定义了一个datagridview,在第一列有个下拉框,从业务需求的角度上来说,第一个下拉框的值改变的话要触发一个事件,就是动态的选定一个combobox(有两个combobox)绑定到 值改变的下拉框所在行的第二列.
就是说我要动态的把combobox绑定到某一个指定的datagridview的cell里面.希望牛人帮手,叩谢!!
谢谢你的回答.
我今天已经想到解决方法了.
用CellEndEdit事件触发函数去响应cell值的改变.
combbox绑定的问题,我把datagridview的那一列定义成DataGridViewComboBoxColumn,然后再把指定cell强制转换为datagridviewcomboboxcell就可以绑定数据了.
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();
本回答被提问者采纳
如何获得DataGridView中某一列中全部的值?
在C#中将DataGridView的某一列的值填充到另一列中?求代码!
写个for循环就行了 循环的个数就是你DataGridView.Rows.count就是至于取出值来放到哪里就看你自己喜好了 string[],hastable这些都可以
for(int x=0;x<DataGridView.Rows.count;x++)
dataGridView1.Rows[x].Cells[你要的列的下标].ToString()
参考技术A //循环每一行;
foreach(DataRow row in dataGridView1.Rows)
row[被赋值列的名字或索引]=row[取值列的名字或索引];
参考技术B 补充 这个实现的方法 其实 最好在数据源 就给做好
在datatable 里吧这个方法实现 不是更简单 之后在赋给 dataGridView 参考技术C 用while循环求出每行的同列插入新列中dataGridView1.Rows[0].Cells[1].ToString() 参考技术D dataGridView1.Rows[0].Cells[1].ToString()
第1行 第二个单元格的内容
以上是关于C# 如何在一个Datagridview 的 某一个cell里面 绑定一个自定义的combobox的主要内容,如果未能解决你的问题,请参考以下文章
请教一下,C#,我现在用datagridview中某一单元格操作另一个datagridview,请问思路是怎样的呢?
asp.net(C#) datagridview 如何实现单元格值更改后自动触发事件
c# winform下如何实现datagridview拆分单元格或者跨行显示