1.绑定数据源
1.1数据源为dataTable
DataTable dt=new DataTable ();
//显示的数据
ComBox1.DisplayMemeber="name";//name为DataTable的字段名
//隐藏的数据(对于多个数据,可以用逗号隔开。例:id,name)
ComBox1.ValueMember="id";//id为DataTable的字段名(对于隐藏对个数据,把数据放到一个字段用逗号隔开)
//绑定数据源
ComBox1.DataSource=dt;
2.选择数据
ComBox1.SelectedValue 获取或设置由ValueMember 属性指定的成员属性的值
ComBox1.SelectedText 获取或设置ComboBox 的可编辑部分中选定的文本。
private void SqlServrDbaseForm_Load(object sender, EventArgs e)
{
//获取绑定服务器所有数据库名:
ClassSqlServrDbaseConfig classSqlServrDbaseConfig = new ClassSqlServrDbaseConfig();
DataSet ds = classSqlServrDbaseConfig.GetSysDatabases();
this.comboBoxDb.DisplayMember = "name";//下拉框绑定表中的某个字段
this.comboBoxDb.DataSource = ds.Tables[0];//下拉框的数据源绑定到表
this.comboBoxDb.SelectedIndex = -1;//默认不选中第一个数据
}
一般手动添加 ComboBox 数据有很多种方法,可以直接添加 Item,也可以通过数据绑定 Value 和 Display。
直接添加 Item 无法设置下拉框的值,所以我使用绑定 ComboBox 数据源的 Datatble 方式
直接通过二维数组 String 自动转换绑定到 ComboBox
// 调用方法
string[][] Sort_arr = new string[2][];
Sort_arr[0] = new string[] {"0","1","2" };
Sort_arr[1] = new string[] { "综合排序" , "销量排序", "新品排序" };
StrArrToCbx(Sort_arr,CbxSort);// 传入数组和实例化的ComboBox即可自动完成绑定
绑定方法
public void StrArrToCbx(string[][] strArr,ComboBox combo,string str1="id",string str2="name")
{
DataTable dt_inner = new DataTable();
dt_inner.Columns.Add(new DataColumn(str1));
dt_inner.Columns.Add(new DataColumn(str2));
if (strArr.Length > 0)
{
for (int d = 0; d < strArr[0].Length; d++)
{
DataRow dr_inner = dt_inner.NewRow();
dr_inner[str1] = strArr[0][d];
dr_inner[str2] = strArr[1][d];
dt_inner.Rows.Add(dr_inner);
}
}
combo.DataSource = dt_inner;
combo.ValueMember = str1;
combo.DisplayMember = str2;
combo.SelectedIndex = 0;
//return dt_inner;
}
C#ComboBox控件“设置 DataSource 属性后无法修改项集合”的解决方法
再清除下拉列表项的时候首先将ComboBox.DataSource付空值“null”,问题果然就迎刃而解了。
if (combo_Area.Items.Count > 0)
{
combo_Area.DataSource = null;
combo_Area.Items.Clear();
}