问题表现:
winform中,多个ComboBox 绑定同一个数据源时,选择其中一个ComboBox,其他的也跟着变成同一选项.
解释:
这种 问题主要是因为combobox绑定了同一个数据源,对数据源的操作导致了其他控件改变.但是在有些情况下, 我们确实需要让多个combobox控件绑定同一个数据源,但不想让他们联动.这样就必须想办法让他们分别对应一个数据源.(如下图.画的比较恶心.差不多一个意思.)其中数据源自然都是同一个,只是绑定的方式略有改变.
解决方法:
把DataTable的数据Copy出来,给每一个ComboBox的数据源。
例如:
DataTable tableSource ;
//取数据
ComboBox1.DataSource=tableSource.Copy();
ComboBox2.DataSource=tableSource.Copy();
------------------------------------------------------------------------------------------------------------------------------------------------------
DataTable绑定时:
多ComboBox同时面对一个对象
內存中實際上只是存儲了一份共用的DataSource(DataTable or DataSet)
解决:
把DataTable的数据Copy出来,给每一个ComboBox的数据源。
例如:
DataTable tableSource ;
//取数据
ComboBox1.DataSource tableSource.Copy();
ComboBox2.DataSource tableSource.Copy();
List<T>泛型绑定时:
List<KqiPageSetupInfo> noColumnList =数据库得的值
//插入空选项
KqiPageSetupInfo setup = new KqiPageSetupInfo();
setup.PageSetupid = "";
setup.Title = "";
noColumnList.Insert(0, setup);
解决:
KqiPageSetupInfo[] noColum1 = noColumnList.ToArray();//复制一个对象数组
this.combTitle.DisplayMember = "title";
this.combTitle.ValueMember = "pageSetupid";
this.combTitle.DataSource = noColum1;
KqiPageSetupInfo[] noColum2 = noColumnList.ToArray();
this.combKeyWord.DisplayMember = "title";
this.combKeyWord.ValueMember = "pageSetupid";
this.combKeyWord.DataSource = noColum2;
参考原文:http://hi.baidu.com/suralauto/blog/item/4f709df70c90962c730eec40.html