BindingContext问题

时间:2011-09-08 23:27:28

标签: c# .net data-binding combobox

我在.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_cheque更改combo_ctas_cheque时,combo_clabe_cheque也会更改哪个是预期的行为。然后我创建一个新的BindingContext来取消绑定4,5& 6个组合框也使用相同的数据源。 这里的问题是:当combo_Bancos_cheque值发生变化时,combo_ctas_dep& combo_clabe_dep也发生了变化,但我不想这样,只有当combo_Bancos_dep发生变化时才需要更改这些组合框。

我是BindingContexts的新手,我缺少什么?

2 个答案:

答案 0 :(得分:1)

这是一个快速猜测,但是你不需要将组合框5和6指向与组合4(combo_Bancos_dep)相同的绑定上下文吗?

如果在变量中创建新的绑定上下文,然后将其设置为CB 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";

答案 1 :(得分:0)

根据我的推断,我相信行为是预期的 - 你将相同的来源绑定到组合框。

我相信这句话:

    combo_Bancos_dep.BindingContext = new BindingContext(); 

不按照您的意愿行事 - 即绑定到新来源。

如果“bancos”是DataTable,您可以删除上面的行并在“bancos”上执行复制以创建新的DataTable并使用它来绑定其他组合:

DataTable copyOfbancos = bancos.Copy();
combo_Bancos_dep.DataSource = copyOfbancos;
combo_Bancos_dep.DisplayMember = "Nombre";
combo_Bancos_dep.ValueMember = "IDBanco";