Дорброго дня всем!
Задача следующая — есть 2 ComboBox (GridView, и т. п. — не важно).
Есть DataSet, в котором есть связанные таблицы (предположим, таблица
Vendors и
PriceTemplates, связанные по полю
VendorFk в таблице
PriceTempalte).
Есть 2 ComboBox, в первом из которых выбирается Vendor, во втором, соответсвтенно, PriceTemplate из всех, принадлежащих данному вендору.
Для этого есть следующий код:
VendorComboBox.DataSource = Global.dataSet;
VendorComboBox.DataMember = "Vendors";
VendorComboBox.DisplayMember = "SmallName";
VendorComboBox.ValueMember = "Vendor";
VendorComboBox.DataBindings.Add("SelectedValue", Global.dataSet, "Vendors.Vendor"); //1
PriceTemplateComboBox.DataSource = Global.dataSet;
PriceTemplateComboBox.DataMember = "Vendors.FK_Vendors_VendorPrices";
PriceTemplateComboBox.DisplayMember = "Name";
PriceTemplateComboBox.ValueMember = "PriceTemplate";
где
FK_Vendors_VendorPrices — связь между таблицами
Vendors и
VendorPrices соответственно.
Проблема: Binding не срабатывает. Во втором ComboBox всегда список из элементов, относящихся к первому вендору.
Как добиться рабчего состояния?
PS: на месте "//1" пытался использовать
VendorComboBox.DataBindings.Add("SelectedValue", Global.dataSet, "PriceTemplates.VendorFk");
что также не помогло.
05.03.07 14:56: Перенесено модератором из '.NET' — TK
Используй component BindingSource
Posted via RSDN NNTP Server 2.0
Здравствуйте, DoMage, Вы писали:
DM>Задача следующая — есть 2 ComboBox (GridView, и т. п. — не важно).
Описывай всё-таки подробнее. Не ленись
Например, у комбобокса нет свойства DataMember
Здравствуйте, _FRED_, Вы писали:
_FR>Здравствуйте, DoMage, Вы писали:
DM>>Задача следующая — есть 2 ComboBox (GridView, и т. п. — не важно).
_FR>Описывай всё-таки подробнее. Не ленись
_FR>Например, у комбобокса нет свойства DataMember
Да, правда... Это модифицированный ComboBox (Janus Combo Box)...
Но и обычные комбобоксы никак не получается так связать...
Можно ли где-нибудь найти ксуочек кода такой связи?
Здравствуйте, Oleksandr V. Krysan, Вы писали:
OVK>Используй component BindingSource
А каким образом?
Здравствуйте, DoMage, Вы писали:
DM>Здравствуйте, Oleksandr V. Krysan, Вы писали:
OVK>>Используй component BindingSource
DM>А каким образом?
Значит есть экземпляр типизированного DataSet'а (dataSetMasterDetails) таблицами Master и Details, и relation'ом (с именем "FK_Master_Details") между ними.
Для отображения понадобятся два BindingSourc'а, которые настраиваются следующим образом:
private void Form1_Load(object sender, EventArgs e)
{
LoadDataSet(dataSetMasterDetails);
bindingSourceMaster.DataSource = dataSetMasterDetails;
bindingSourceMaster.DataMember = "Master";
bindingSourceDetails.DataSource = bindingSourceMaster;
bindingSourceDetails.DataMember = "FK_Master_Details";
// Наглядное отображение
dataGridViewMaster.DataSource = bindingSourceMaster;
dataGridViewDetails.DataSource = bindingSourceDetails;
bindingNavigator1.BindingSource = bindingSourceMaster;
}
Вот и все. Теперь при изменении выделенной строки в первом гриде, во втором автоматически будут отображаться дочерние строки.