C # - Настройка связанных с данными каскадных комбинированных блоков во время разработки - PullRequest
3 голосов
/ 28 июля 2011

У меня есть то, что я считаю простой проблемой, но не могу найти подходящий пример после долгих поисков.Проще говоря, это приложение формы Windows с 2 комбинированными полями с привязкой к данным на форме, первое из которых предназначено для «Отдела», а второе - для «Раздела».Каждая из этих комбинаций связана с соответствующими таблицами в базе данных SQL.Комбинации должны работать с пользователем, выбирающим Отдел из первого, что приводит к тому, что второе комбо фильтруется, чтобы показать только разделы, принадлежащие этому отделу.(Другими словами, это классическая проблема каскадных комбо-боксов).Мой опыт изначально связан с Delphi, и это была простая проблема времени разработки.

Однако в C # я застрял и просто не могу заставить его работать.Я бы подумал, что это можно сделать во время разработки, возможно, с помощью некоторого минимального кода за событием SelectedIndexChanged.Я был бы очень признателен, если бы у кого-нибудь был базовый (форма, 2 комбинированных списка, простые источники данных) пример, на который они могут указать мне.

Спасибо, Джеймс

Ответы [ 2 ]

1 голос
/ 28 июля 2011
ComboBox cbDepartment = new ComboBox();
cbDepartment.Name = "cbDepartment";
cbDepartment.DataSource = dsDepartments;
cbDepartment.SelectedIndexChanged = new System.EventHandler(cbDepartment_SelectedIndexChanged);

private void cbDepartment_SelectedIndexChanged(object sender, System.EventArgs e) {
    cbSection.DataSource = GetSection(cbDepartment.SelectedItem.Value);
}

Вы можете попробовать что-то подобное выше.

0 голосов
/ 28 июля 2011

Вы не указали, к чему вы привязывались.Я всегда привязываюсь к объектам, вот как я это делаю:

В событии загрузки формы:

ddlParent.DataSource = new BindingSource(myIEnumerable, null);

И обработчик события для родительского выпадающего списка:

private void ddlParent_SelectedIndexChanged(object sender, EventArgs e)
{
    ddlChild.DataSource = new BindingSource((MyBoundType)ddlParent.SelectedItem, null);
}

Я не знаю, как это сделать во время разработки.

Вероятно, вам следует переопределить метод ToString () объектов, привязанных к раскрывающемуся списку, для управления текстом, отображаемым ввыпадающий.

...