社区
C语言
帖子详情
C# Winform中DataGridView中DataGridViewComboBoxColumn如何绑定数据源
yannis_lin
2013-03-02 02:48:48
DataGridView中DataGridViewComboBoxColumn绑定数据源后 当我改变DataGridViewComboBoxColumn的值时 DataGridView中后面几列的值也随之改变
...全文
340
1
打赏
收藏
C# Winform中DataGridView中DataGridViewComboBoxColumn如何绑定数据源
DataGridView中DataGridViewComboBoxColumn绑定数据源后 当我改变DataGridViewComboBoxColumn的值时 DataGridView中后面几列的值也随之改变
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
liumingqiu32
2013-05-15
打赏
举报
回复
usingSystem;usingSystem.Data;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;namespaceMyNameSpace { publicpartialclassMainForm : Form { //定义下拉列表框 privateComboBox cmb_Temp =newComboBox(); publicMainForm() { InitializeComponent(); } /// ///绑定性别下拉列表框 /// privatevoidBindSex() { DataTable dtSex =newDataTable(); dtSex.Columns.Add("Value"); dtSex.Columns.Add("Name"); DataRow drSex; drSex =dtSex.NewRow(); drSex[0] ="1" drSex[1] ="男" dtSex.Rows.Add(drSex); drSex =dtSex.NewRow(); drSex[0] ="0" drSex[1] ="女" dtSex.Rows.Add(drSex); cmb_Temp.ValueMember ="Value" cmb_Temp.DisplayMember ="Name" cmb_Temp.DataSource =dtSex; cmb_Temp.DropDownStyle =ComboBoxStyle.DropDownList; } /// ///为避免连接数据库,这里手工构造数据表,实际应用中应从数据库中获取 /// privatevoidBindData() { DataTable dtData =newDataTable(); dtData.Columns.Add("ID"); dtData.Columns.Add("Name"); dtData.Columns.Add("Sex"); DataRow drData; drData =dtData.NewRow(); drData[0] =1 drData[1] ="张三" drData[2] ="1" dtData.Rows.Add(drData); drData =dtData.NewRow(); drData[0] =2 drData[1] ="李四" drData[2] ="1" dtData.Rows.Add(drData); drData =dtData.NewRow(); drData[0] =3 drData[1] ="王五" drData[2] ="1" dtData.Rows.Add(drData); drData =dtData.NewRow(); drData[0] =4 drData[1] ="小芳" drData[2] ="0" dtData.Rows.Add(drData); drData =dtData.NewRow(); drData[0] =5 drData[1] ="小娟" drData[2] ="0" dtData.Rows.Add(drData); drData =dtData.NewRow(); drData[0] =6 drData[1] ="赵六" drData[2] ="1" dtData.Rows.Add(drData); this.dgv_User.DataSource =dtData; } privatevoidMainForm_Load(objectsender, EventArgs e) { // 绑定性别下拉列表框 BindSex(); //绑定数据表 BindData(); // 设置下拉列表框不可见 cmb_Temp.Visible = false; // 添加下拉列表框事件 cmb_Temp.SelectedIndexChanged += new EventHandler(cmb_Temp_SelectedIndexChanged); // 将下拉列表框加入到DataGridView控件中 this.dgv_User.Controls.Add(cmb_Temp); } // 当用户移动到性别这一列时单元格显示下拉列表框 private void dgv_User_CurrentCellChanged(object sender, EventArgs e) { try { if (this.dgv_User.CurrentCell.ColumnIndex == 2) { Rectangle rect = dgv_User.GetCellDisplayRectangle(dgv_User.CurrentCell.ColumnIndex, dgv_User.CurrentCell.RowIndex, false); string sexValue = dgv_User.CurrentCell.Value.ToString(); if (sexValue == "1") { cmb_Temp.Text = "男"; } else { cmb_Temp.Text = "女"; } cmb_Temp.Left = rect.Left; cmb_Temp.Top = rect.Top; cmb_Temp.Width = rect.Width; cmb_Temp.Height = rect.Height; cmb_Temp.Visible = true; } else { cmb_Temp.Visible = false; } } catch { } } // 当用户选择下拉列表框时改变DataGridView单元格的内容 private void cmb_Temp_SelectedIndexChanged(object sender, EventArgs e) { if (((ComboBox)sender).Text == "男") { dgv_User.CurrentCell.Value = "男"; dgv_User.CurrentCell.Tag = "1"; } else { dgv_User.CurrentCell.Value = "女"; dgv_User.CurrentCell.Tag = "0"; } } // 滚动DataGridView时将下拉列表框设为不可见 private void dgv_User_Scroll(object sender, ScrollEventArgs e) { this.cmb_Temp.Visible = false; } // 改变DataGridView列宽时将下拉列表框设为不可见 private void dgv_User_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) { this.cmb_Temp.Visible = false; } // 绑定数据表后将性别列中的每一单元格的Value和Tag属性(Tag为值文本,Value为显示文本) private void dgv_User_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) { for (int i = 0; i < this.dgv_User.Rows.Count; i++) { if (dgv_User.Rows[i].Cells[2].Value != null && dgv_User.Rows[i].Cells[2].ColumnIndex == 2) { dgv_User.Rows[i].Cells[2].Tag = dgv_User.Rows[i].Cells[2].Value.ToString(); if (dgv_User.Rows[i].Cells[2].Value.ToString() == "1") { dgv_User.Rows[i].Cells[2].Value = "男"; } else if (dgv_User.Rows[i].Cells[2].Value.ToString() == "0") { dgv_User.Rows[i].Cells[2].Value = "女"; } } } } } }
C#
DataGridView
即可下拉选择又可手动输入内容的列
注:本程序为个人原创,转载时请注明来
源
! 该类是基于
DataGridView
Column封装的一个即可下拉选择又可手动输入内容的列。 与
DataGridView
ComboBoxColumn
不同之处在于: 1,系统默认的只允许选择,不允许输入;本程序即可输入有可选择(通过DropDownStyle属性控制); 2,系统默认的当前列的所有单元格
数据
源
为同一个;本程序可给当前列的任意单元格设置自己的
数据
源
(未设置情况下默认为列的
数据
源
); 3,系统默认的需要指
定
ValueMember和DisplayMember;本程序无需指
定
,只需要给DataSource赋值即可。 4,手动输入一个下拉列表
中
不存在的值时,程序会自动将该值添加到
数据
源
中
,此时隐藏值(Key)和显示值(Value)一致。 5,获取到的单元格的值Value(也即Row[i].Cell[j].Value)为隐藏值(也即Key)
datagridview
中
的下拉列表赋值
关于给
datagridview
中
的下拉列表赋值,主要用到的2个参数就是 displaymember(相当于text) 和 valuemember(相当于value)。 用的是vs2008,如果解决方案打不开可以直接看代码,就几行代码,很容易看懂呵呵。
C#
Winform
窗体与界面设计
本课程是针对
C#
Winform
开发人员的基础性课程,详尽的介绍
C#
Winform
窗体与界面的设计,通过提供实例,让
C#
Winform
开发人员掌握相关程序设计技巧,为后面学习完整的实战课程打下较好的基础。
C#
在
DataGridview
中
使用ComboBox实现Column手动输入内容
摘要:
C#
源
码,
数据
库应用,
DataGridview
C#
DataGridview
中
使用ComboBox,实现Column可以手动自由输入。在
winform
datagridview
中
使用下拉框, 既可以从下拉框里选择
数据
,也可以让使用者自己手动往里面输入
数据
。虽然简单,不过觉得挺实用的功能。 运行环境:Visual Studio2010
C#
Winform
中
DataGridView
的
DataGridView
ComboBoxColumn
使用方法
下面介绍
Winform
中
DataGridView
的
DataGridView
ComboBoxColumn
的使用方法:
DataGridView
ComboBoxColumn
手动
绑
定
数据
源
1//默认将AllowUserToAddRows设置成了False,所以创建一个
DataGridView
Row添加到
DataGridView
中
2
DataGridView
Rowdgvr=newDat...
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章