c# comboBox控件绑定表字段问题。如何同时绑定多个comboBox呢,使其下拉列表的内容都是一样的 见详细补充
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# comboBox控件绑定表字段问题。如何同时绑定多个comboBox呢,使其下拉列表的内容都是一样的 见详细补充相关的知识,希望对你有一定的参考价值。
我定义了多个comboBox,但下面的代码只能绑定一个comboBox。要是一个一个绑定代码太多了。能不能同时绑定多个comboBox呢,使其下拉列表的内容都是一样的。
Maticsoft.BLL.T_Banci banci = new Maticsoft.BLL.T_Banci();
DataSet ds = banci.GetList("");
comboBox1.DataSource=ds.Tables[0].DefaultView;
comboBox1.DisplayMember = "Type";
comboBox1.ValueMember = "Type";
是c# winform程序。
public void BindComBox(ComboBox comBox,DataSet ds)
comBox.DataSource=ds.Tables[0].DefaultView;
comBox.DisplayMember = "Type";
comBox.ValueMember = "Type";
然后在页面上调用
Page_Load()
Maticsoft.BLL.T_Banci banci = new Maticsoft.BLL.T_Banci();
DataSet ds = banci.GetList("");
BindComBox(comBox1,ds);
BindComBox(comBox2,ds);
BindComBox(comBox3,ds);
BindComBox(comBox4,ds);
BindComBox(comBox5,ds);
BindComBox(comBox6,ds);..................................
追问
哥们 你这种方法 牵一发而动全身 ,改变任何一个comboBox的值 其余的都会改变。有没有什么改进方法呢?
追答1.定义方法
void BindComBox(DataSet ds, ComboBox cmb)
cmb.DisplayMember = "Type";
cmb.ValueMember = "Type";
foreach (DataRow row in ds.Tables[0].Rows)
cmb.Items.Add(row);
2.
Maticsoft.BLL.T_Banci banci = new Maticsoft.BLL.T_Banci();
DataSet ds = banci.GetList("");
BindComBox(ds, comboBox1);
BindComBox(ds, comboBox2);
BindComBox(ds, comboBox3);
BindComBox(ds, comboBox4);
现在每个comboBox里的内容就是System.Data.DataRow。
追答这样你还不知道就算了吧 。。
建立一个类:
class MyType
public MyType(string _type1, string _type)
type = _type;
type1 = _type1;
private string type;
public string Type
get return type;
set type = value;
private string type1;
public string Type1
get return type1;
set type1 = value;
然后方法这样写:
void BindComBox(DataSet ds, ComboBox cmb)
cmb.DisplayMember = "Type";
cmb.ValueMember = "Type1";
foreach (DataRow item in ds.Tables[0].Rows)
cmb.Items.Add(new MyType(item["Type"].ToString(), item["Type1"].ToString()));
comboBox1.DataSource=ds.Tables[0].DefaultView;
comboBox1.DisplayMember = "Type";
comboBox1.ValueMember = "Type";
comboBox2.DataSource=ds.Tables[0].DefaultView;
comboBox2.DisplayMember = "Type";
comboBox2.ValueMember = "Type";
comboBox3.DataSource=ds.Tables[0].DefaultView;
comboBox3.DisplayMember = "Type";
comboBox3.ValueMember = "Type";
第二种方法是,循环窗体的控件,如果控件类型是combobox,就绑定,例如:
foreach(Control com in this.Controls)
if(com.controlType.toString()=="System.windows.form.ComboBox")
com.DataSource=ds.Tables[0].DefaultView;
com.DisplayMember = "Type";
com.ValueMember = "Type";
以上代码只是我手写的,你看着写吧追问
if(com.controlType.toString()=="System.windows.form.ComboBox")
这句不对 没有controlType这个属性
那就是我记错了,其他属性,反正就是***Type,获取控件的类型。
追问没有什么***Type
追答GetType()方法,
if (com.GetType().ToString() == "System.Windows.Forms.ComboBox")
com.DataSource=ds.Tables[0].DefaultView;
com.DisplayMember = "Type";
com.ValueMember = "Type";
com.DataSource=ds.Tables[0].DefaultView;
com.DataSource= "Type";
com.ValueMember = "Type";
哥们 这里 DataSource DataSource ValueMember 都报错呢》。。。
变通一下嘛,com是Control类型,转换成ComboBox类型应该就行了呗。
((ComboBox)com).DataSource=ds.Tables[0].DefaultView;
然后给每个ComboBox绑定上相同的数据源。
foreach (Control control in Controls)
if (control is ComboBox)
ComboBox comboBox = (ComboBox)control;
comboBox.DataSource = ds.Tables[0].DefaultView;
//其他操作
追问
哥们 你这种方法 牵一发而动全身 ,改变任何一个comboBox的值 其余的都会改变。
参考技术C comboBox1.DataSource=ds.Tables[0].DefaultView;comboBox1.DisplayMember = "Type";
comboBox1.ValueMember = "Type";
comboBox2.DataSource=ds.Tables[0].DefaultView;
comboBox2.DisplayMember = "Type";
comboBox2.ValueMember = "Type";
comboBox3.DataSource=ds.Tables[0].DefaultView;
comboBox3.DisplayMember = "Type";
comboBox3.ValueMember = "Type";
comboBox4.DataSource=ds.Tables[0].DefaultView;
comboBox4.DisplayMember = "Type";
comboBox4.ValueMember = "Type";
comboBox5.DataSource=ds.Tables[0].DefaultView;
comboBox5.DisplayMember = "Type";
comboBox5.ValueMember = "Type";
comboBox6.DataSource=ds.Tables[0].DefaultView;
comboBox6.DisplayMember = "Type";
comboBox6.ValueMember = "Type";
comboBox7.DataSource=ds.Tables[0].DefaultView;
comboBox7.DisplayMember = "Type";
comboBox7.ValueMember = "Type";追问
哥们 你这个少了个 DataSet ds2 = banci.GetList(""); 每个comboBox都要写这一句。
C# Winform中 选中DatagridView控件中某行如何将该行某个字段(1,2,3,4,)的值绑定CheckedListBox控件的数
this.DatagridView1.SelectedRows[0].Cells[0].Value.ToString()//获取选中行的第一列的值其他列以此类推
CheckedListBox1.Items.add(string value);//绑定追问
CheckedListBox1.Items.add(string value);//绑定
这个(string value)用不起啊,能说明清楚点吗?小弟初学者!!!麻烦各位大哥帮下忙了~
string value是你要绑定的值,比如你需要列表绑定1、2、3代码如下:
CheckedListBox1.Items.add("1");
CheckedListBox1.Items.add("2");
CheckedListBox1.Items.add("3");
那你是怎么做到的啊,能告诉我嘛??谢谢!!!
追答private void dgvDic_CurrentCellChanged(object sender, EventArgs e)
在这儿检查是那个位置,以显示不同的列表框
switch(dgvDic.CurrentCell.ColumnIndex)
case 0:
。。。。
break;
case 1:
。。。。
break;
定位列表框的位置大小
public static void setComboBox(ref ComboBox cmbbox, ref DataGridView dgv)
Rectangle rect = new Rectangle();
rect = dgv.GetCellDisplayRectangle(dgv.CurrentCell.ColumnIndex, dgv.CurrentCell.RowIndex, false);
cmbbox.Left = rect.Left + dgv.Left;
cmbbox.Top = rect.Top + dgv.Top;
cmbbox.Width = rect.Width;
cmbbox.Height = rect.Height;
cmbbox.Visible = true;
替换值
private void cmbPageType_SelectedIndexChanged(object sender, EventArgs e)
dgvDic.CurrentCell.Value = tabPageType.Rows[cmbPageType.SelectedIndex]["t_type"].ToString();
以上是关于c# comboBox控件绑定表字段问题。如何同时绑定多个comboBox呢,使其下拉列表的内容都是一样的 见详细补充的主要内容,如果未能解决你的问题,请参考以下文章
Winform开发中如何将数据库字段绑定到ComboBox控件
C# winForm程序 数据绑定 更新控件问题 combobox绑定的DataSource 数据表中已经添加了新的数据
C# winform程序 绑定listView1控件值(对应数据库表中的字段名) 循环绑定 insert into 语句中的到吗问题...