У меня есть Combobox в моей форме. Этот комбинированный список заполняется значениями из таблицы (факультета) в базе данных.
Мне нужно установить SelectedValue
этого комбинированного списка на основе записи в другой таблице (студент). Обе таблицы находятся в одной базе данных.
Я пытался установить SelectedValue
, используя значение, полученное из student
table
cmbfaculty.SelectedValue = table.Rows[0][1].ToString();
, но это не сработало.
До сих пор я мог только заполнить поле со списком,
// --- populate faculty cmb ---
MySqlCommand cmdCmb = new MySqlCommand("SELECT facultyname FROM faculty;", db.getConnection());
db.openConnection(); // open connection
using (var reader = cmdCmb.ExecuteReader())
{
while (reader.Read())
{
cmbfaculty.Items.Add(reader.GetString("facultyname"));
}
}
, но не смог установить SelectedValue
.
string sQuery = "SELECT indexno,faculty FROM student WHERE indexno ='"+selected+"'";
MySqlCommand cmd = new MySqlCommand(sQuery, db.getConnection());
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
DataTable table = new DataTable();
adapter.Fill(table);
txtindex.Text = table.Rows[0][0].ToString();
cmbfaculty.SelectedValue = table.Rows[0][1].ToString();
Надеясь исправить проблему.
РЕДАКТИРОВАТЬ:
Можно сделать это, найдя элемент, который точно соответствует указанной строке ComboBox.FindStringExact Method
,
cmbfaculty.SelectedValue = table.Rows[0][1].ToString();
необходимо заменить на
cmbfaculty.SelectedIndex = cmbfaculty.FindStringExact(table.Rows[0][1].ToString()) ;
Существуют ли другие способы архивировать это.