3

Мне нужно добавить разные значения из базы данных в мой DataGridViewComboBoxColumn из таблицы 1 (id, name, ...) и должно иметь выбранное значение (имя).C# заполнить DataGridViewComboBoxCell из набора данных и получить выбранное значение из базы данных

Мой код:

SqlDataAdapter coursead = new SqlDataAdapter("select * from tbl_armycourses", longrollcon); 
coursead.Fill(courseds, "tbl_armycourses"); 

for (int j = 0; j < ds5.Tables[0].Rows.Count; j++) 
{ 
    DataGridViewComboBoxCell ComboColumn = (DataGridViewComboBoxCell)(dataGridView5.Rows[j].Cells[0]); 
    ComboColumn.DisplayMember = "course_name"; 
    ComboColumn.ValueMember = "armycourse_id"; 
    ComboColumn.DataSource = courseds.Tables["tbl_armycourses"]; 
} 
for (int i = 0; i < ds5.Tables[0].Rows.Count; i++) 
{ 
    int courseid = Convert.ToInt32(ds5.Tables[0].Rows[i]["course_id"]); 
    dataGridView5.Rows.Add("..i want to add here selected index of comboboxcolumn..", ds5.Tables[0].Rows[i]["course_year"], ds5.Tables[0].Rows[i]["course_grading"], ds5.Tables[0].Rows[i]["course_auth"]); 
} 
+0

Если вы добавите значение, если элемент, который вы хотите выбрать в качестве значения ячейки, он будет выбран. Это то, что вы хотите? – TaW

+0

да сначала заполнить этот столбец из набора данных, а затем установить выбранное значение из databse. – Manraj

ответ

1

Если ComboBoxColumn добавляется в DataGridView в первом столбце, то этого достаточно, чтобы добавить значение ячейки, а затем она будет отображаться как выбранный в выпадающем списке:

dataGridView5.Rows.Add(Convert.ToInt32(ds5.Tables[0].Rows[i]["course_id"]), 
         ds5.Tables[0].Rows[i]["course_year"], 
         ds5.Tables[0].Rows[i]["course_grading"], 
         ds5.Tables[0].Rows[i]["course_auth"]); 

Обратите внимание, что значение должно существовать в поле со списком, иначе вы получите исключение.

Также вы должны заполнить этот столбец COMBOBOX таким образом, вам не нужен цикл:

SqlDataAdapter coursead = new SqlDataAdapter("select * from tbl_armycourses", longrollcon); 
coursead.Fill(courseds, "tbl_armycourses"); 

var ComboColumn= (DataGridViewComboBoxColumn)dataGridView5.Columns[0]; 
ComboColumn.DisplayMember = "course_name"; 
ComboColumn.ValueMember = "armycourse_id"; 
ComboColumn.DataSource = courseds.Tables["tbl_armycourses"]; 

Обратите внимание, что первый столбец должен быть типа DataGridViewComboBoxColumn иначе вы получите исключение.

Примечание:
В общем, я рекомендую вам использовать привязку данных - например, к DataTable - и не добавлять строки таким образом. Одна из лучших функций в Windows Forms - использование Designer и использование DataBinding.

+0

. Дайте мне знать, если у вас есть какие-либо вопросы по поводу ответа или если он окажется полезным :) –

+0

дорогой вы помогли мне еще раз. +1 к вам – Manraj

+0

Рад слышать, что это было полезно :) –

Смежные вопросы