BindingContext problem
本文关键字:problem BindingContext | 更新日期: 2023-09-27 18:08:17
我在一个。net应用程序中使用BindingContext有问题。我需要用相同的数据源填充6个组合框,但前3个组合框必须独立于最后3个组合框。
我编写了如下代码:
combo_Bancos_cheque.DataSource = bancos;
combo_Bancos_cheque.DisplayMember = "Nombre";
combo_Bancos_cheque.ValueMember = "IDBanco";
combo_ctas_cheque.DataSource = bancos;
combo_ctas_cheque.DisplayMember = "NoCuenta";
combo_clabe_cheque.DataSource = bancos;
combo_clabe_cheque.DisplayMember = "CLABE";
combo_Bancos_dep.BindingContext = new BindingContext();
combo_Bancos_dep.DataSource = bancos;
combo_Bancos_dep.DisplayMember = "Nombre";
combo_Bancos_dep.ValueMember = "IDBanco";
combo_ctas_dep.DataSource = bancos;
combo_ctas_dep.DisplayMember = "NoCuenta";
combo_clabe_dep.DataSource = bancos;
combo_clabe_dep.DisplayMember = "CLABE";
前3个组合框工作良好,当combo_bancos_check改变时,combo_ctas_check和combo_clabe_check也改变,这是预期的行为。然后我创建一个新的BindingContext来解除绑定4,5 &6个组合框,也使用相同的数据源。这里的问题是:当combo_bancos_check值改变时,combo_ctas_deep &combo_clabe_dep也改变了,但我不想这样,我需要这些组合框只在combo_Bancos_dep改变时才改变。
我是新的绑定上下文,我错过了什么?
这是一个快速的猜测,但是您不需要将组合框5和6指向与组合框4 (combo_Bancos_dep)相同的绑定上下文吗?
如果您将新的绑定上下文创建到一个变量中,然后将其设置为CBs 4、5和6,那会怎么样呢?
编辑:我刚刚核实了一下,以上是正确的。你真的很接近了,你只需要设置你的新BindingContext为combo_ctas_dep和combo_clabe_dep。
这是你发布的更改:
combo_Bancos_cheque.DataSource = bancos;
combo_Bancos_cheque.DisplayMember = "Nombre";
combo_Bancos_cheque.ValueMember = "IDBanco";
combo_ctas_cheque.DataSource = bancos;
combo_ctas_cheque.DisplayMember = "NoCuenta";
combo_clabe_cheque.DataSource = bancos;
combo_clabe_cheque.DisplayMember = "CLABE";
BindingContext oBC = new System.Windows.Forms.BindingContext();
combo_Bancos_dep.BindingContext = oBC;
combo_Bancos_dep.DataSource = bancos;
combo_Bancos_dep.DisplayMember = "Nombre";
combo_Bancos_dep.ValueMember = "IDBanco";
combo_ctas_dep.BindingContext = oBC;
combo_ctas_dep.DataSource = bancos;
combo_ctas_dep.DisplayMember = "NoCuenta";
combo_clabe_dep.BindingContext = oBC;
combo_clabe_dep.DataSource = bancos;
combo_clabe_dep.DisplayMember = "CLABE";
根据我的推断,我相信这种行为是意料之中的——您将相同的源绑定到组合框。
我相信这句话:
combo_Bancos_dep.BindingContext = new BindingContext();
不做你希望它做的事——那就是绑定到一个新的源。
如果"bancos"是一个数据表,你可以删除上面的行,只是对"bancos"做一个拷贝来创建一个新的数据表,并使用它来绑定你的其他组合:
DataTable copyOfbancos = bancos.Copy();
combo_Bancos_dep.DataSource = copyOfbancos;
combo_Bancos_dep.DisplayMember = "Nombre";
combo_Bancos_dep.ValueMember = "IDBanco";