使用相同数据源的多个组合框 (C#)
使用相同数据源的多个组合框 (C#)
更新:问题已解决,请参见下面的答案。
在我的一个表单中(一个Windows Forms应用程序),我有3个组合框。这些组合框需要显示一个价格列表(文本形式,带有一个整数的后端值)。
所有这些组合框都使用相同的数据源(一个类型为TSPrice的List<>,其中ValueMember设置为Price,DisplayMember设置为Description)。
我的问题是...每次我从下拉列表中选择一个价格选项,它们全部都改变为相同的值...这与它们都绑定到相同的数据源有关吗?
这是我如何绑定它们的方式:
var priceList = new List{ new TSPrice(0, ""), new TSPrice(0, "半天"), new TSPrice(0, "全天"), new TSPrice(0, "1 + 半天"), new TSPrice(0, "2天"), new TSPrice(0, "需要正式报价") }; objInsuredPrice.DataSource = priceList; objTPPrice.DataSource = priceList; objProvSum.DataSource = priceList; objInsuredPrice.ValueMember = "Price"; objTPPrice.ValueMember = "Price"; objProvSum.ValueMember = "Price"; objInsuredPrice.DisplayMember = "Description"; objTPPrice.DisplayMember = "Description"; objProvSum.DisplayMember = "Description"; objInsuredPrice.SelectedIndex = 0; objTPPrice.SelectedIndex = 0; objProvSum.SelectedIndex = 0; //objInsuredPrice.DataSource = objTPPrice.DataSource = objProvSum.DataSource = priceList; //objInsuredPrice.ValueMember = objTPPrice.ValueMember = objProvSum.ValueMember = "Price"; //objInsuredPrice.DisplayMember = objTPPrice.DisplayMember = objProvSum.DisplayMember = "Description"; //objInsuredPrice.SelectedIndex = objTPPrice.SelectedIndex = objProvSum.SelectedIndex = 0;
编辑:问题是它们都绑定到了相同的数据源,由Saurabh确认。这是我解决问题的方法。
var priceList = new List{ new TSPrice(0, ""), new TSPrice(1, "半天"), new TSPrice(2, "全天"), new TSPrice(3, "1 + 半天"), new TSPrice(4, "2天"), new TSPrice(5, "需要正式报价") }; var insuredList = new TSPrice[5]; var TPList = new TSPrice[5]; var provList = new TSPrice[5]; priceList.CopyTo(insuredList); priceList.CopyTo(TPList); priceList.CopyTo(provList); objInsuredPrice.DataSource = insuredList; objTPPrice.DataSource = TPList; objProvSum.DataSource = provList; objInsuredPrice.ValueMember = objTPPrice.ValueMember = objProvSum.ValueMember = "Price"; objInsuredPrice.DisplayMember = objTPPrice.DisplayMember = objProvSum.DisplayMember = "Description"; objInsuredPrice.SelectedIndex = objTPPrice.SelectedIndex = objProvSum.SelectedIndex = 0;