Дело в том, что я DataSet использую только частично, там констрайнты не расставлены , т.к. они удаляются когда я меняю псевдонимы колонок в запросе выборки для адаптера и в ручную не получается создать, т.к. при запуске ругается, что нельзя создать constraint, хотя записи в базе корректы для ограничений (в родит. таблице есть запись, на которую указывает foregin key единственной записи в родительской таблице).
Вообщем вот код:
| Код | //cобытие при сменен текущей таблицы из списка private void TableName_ComboBox_SelectedIndexChanged(object sender, EventArgs e) { GV.Columns.Clear(); //получаем имя таблицы - источника данных string name = DDL_TableName.SelectedValue.ToString(); //получаем таблицу данные DataTable table = adapter.getAllDataFromTable(name); //выковыриваем все колонки из полученной таблицы foreach (DataColumn column in table.Columns) { //получаем имя таблицы, из которой будем заполнять ComboBox (по ее PrimKey) string tab_name = adapter.getTableNameByPK(column.ColumnName); //если таблица нашлась то создаем ComboBoxColumn if (!string.IsNullOrEmpty(tab_name)) { DataTable tab = adapter.getAllDataFromTable(tab_name); DataGridViewComboBoxCell cellTemplate = new DataGridViewComboBoxCell(); cellTemplate.DisplayStyleForCurrentCellOnly = true; cellTemplate.ValueMember = "ID_STATE"; cellTemplate.DisplayMember = "Имя"; cellTemplate.DataSource = tab; DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn(); col.CellTemplate = cellTemplate; col.DataPropertyName = "name";
GV.Columns.Add(col); } else { DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn(); col.Name = column.ColumnName; col.HeaderText = column.ColumnName; col.DataPropertyName = column.ColumnName; GV.Columns.Add(col); }
} GV.DataSource = table; GV.Update();
}
|
Все работает, таблица и ComboBox'ы зыполняются, но изначально в ComboBox выбрано пустое значение. |