Проблема BindingContext - PullRequest
       8

Проблема BindingContext

0 голосов
/ 09 сентября 2011

У меня проблемы с BindingContext в приложении .NET. Мне нужно заполнить 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 ]

1 голос
/ 09 сентября 2011

Это быстрое предположение, но вам не нужно указывать комбинированные блоки 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";
0 голосов
/ 09 сентября 2011

Из того, что я могу сделать вывод, я считаю, что поведение ожидается - вы связываете один и тот же источник с полями со списком.

Я верю этому утверждению:

    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";    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...