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改变时才改变。

我是新的绑定上下文,我错过了什么?

BindingContext problem

这是一个快速的猜测,但是您不需要将组合框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";