C# Winform中DataGridView中DataGridViewComboBoxColumn如何绑定数据源

yannis_lin 2013-03-02 02:48:48
DataGridView中DataGridViewComboBoxColumn绑定数据源后 当我改变DataGridViewComboBoxColumn的值时 DataGridView中后面几列的值也随之改变
...全文
340 1 打赏 收藏 转发到动态 举报
写回复
用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 = "女"; } } } } } }

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧