У меня есть подпрограмма, которая заполняет комбинированный список из базы данных; при первом заполнении комбинированного списка все работает отлично, но если я попытаюсь сделать это снова, поле со списком будет полностью пустым. Я сузил это до этой строки:
cboThis.DataSource = cboThis.Items;
Похоже, это очищает коллекцию Items для выпадающего списка ... но только если комбо уже заполнено.
Есть идеи, что здесь может происходить?
Там IS обработчик события для одного из событий SelectedIndexChanged комбо, но, похоже, это не вызывается ничем, кроме первой и последней строк кода.
Вот полная процедура:
public void ComboFromDB(ComboBox cboThis, string strTable, string strField)
{
cboThis.SelectedIndex = -1;
cboThis.DataSource = null;
cboThis.Items.Clear();
string strQuery = @"SELECT ID, " + strField + " FROM " + strTable;
using (SqlConnection sqcConnection = new SqlConnection(strConnection))
{
sqcConnection.Open();
SqlCommand sqcCommand = new SqlCommand(strQuery, sqcConnection);
SqlDataReader dr = sqcCommand.ExecuteReader();
while (dr.Read())
{
cboThis.Items.Add(new ComboItem((int)dr[0], dr[1].ToString())); //this all works fine
}
}
cboThis.DataSource = cboThis.Items; //This line clears cboThis.Items...
cboThis.ValueMember = "ID";
cboThis.DisplayMember = "Display";
cboThis.SelectedIndex = -1;
}
Приветствия