Как предотвратить выбор первого элемента в выпадающем списке в DataSet.Merge () - PullRequest
1 голос
/ 13 ноября 2009

У меня есть ComboBox, элементы которого поступают из DataTable в DataSet. Когда элемент не выбран (combo.selectedindex = -1) и я выполняю .Merge () для DataSet, выбирается первый элемент комбинированного списка. Если элемент уже выбран, он остается выбранным.

Как я могу предотвратить это и сделать так, чтобы даже если я делаю MyDataSet.Merge (otherDs), selectedIndex остается равным -1 (без выбора)?

1 Ответ

3 голосов
/ 16 ноября 2009

Поле со списком действительно разработано, чтобы избежать выбора. Как вы уже видели, можно получить его в этом состоянии, установив для SelectedIndex значение -1, но на самом деле это не та метафора, к которой стремились дизайнеры ComboBox. Идея состоит в том, что пользователь ограничен значениями поля со списком. Поэтому, если «Nothing Selected» является допустимым значением для блока (или, по крайней мере, допустимым для начальной загрузки), оно должно быть частью вашей таблицы данных. Обычно строка со столбцом ValueMember имеет значение DBNull.Value, а DisplayMember - «Ничего не выбрано» или «Пожалуйста, выберите значение» или что-либо подобное.

Тогда ваша проверка пользовательского интерфейса может убедиться, что они не оставили его на этом значении.

ОБНОВЛЕНИЕ: Вы всегда можете добавить значение в последнюю минуту, если не можете добавить значение из процедуры источника данных. На самом деле, некоторые могут посчитать это хорошей идеей, поскольку эта опция «ничего не выбрано» является чисто пользовательским интерфейсом.

DataRow nullRow = MyDataSet.MyTable.NewRow();
nullRow["VAL_COLUMN"] = DBNull.Value;
nullRow["DISP_COLUMN"] = "Please select a value...";
MyDataSet.MyTable.Rows.Insert(0, nullRow); //might have those parameters backwards..
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...