#c# #winforms #visual-studio-2010 #combobox
#c# #winforms #visual-studio-2010 #выпадающий список
Вопрос:
ComboBox привязывает базу данных
string str= comboBox1.SelectedItem.ToString();
в строке указано System.Data.DataRowView
значение для str
, но не указано имя выбранного элемента.
Ответ №1:
попробуйте это
if (comboBox1.SelectedItem is DataRowView) {
string sval = ((DataRowView)comboBox1.SelectedItem).Row["ColumnName"].ToString();
}
Ответ №2:
Если вам нужен текст выбранного элемента, просто используйте comboBox1.Text
.
Ответ №3:
Используйте DisplayMember
и ValueMember
свойства для выпадающего списка, прежде чем назначать DataSource
, и используйте SelectedValue
вместо SelectedItem
.
Например, если у вас есть List<MyClass>
— where MyClass
имеет свойство int ID
, и еще одно string Title
— и вы хотите назначить его в качестве DataSource
of comboBox1
, вы должны написать:
List<MyClass> myList;
...
comboBox1.DisplayMember = "Title";
comboBox1.ValueMember = "ID";
comboBox1.DataSource = myList;
Теперь comboBox1.SelectedValue
есть object{int}
, который можно привести к int
и использовать.
Комментарии:
1. Это дает индекс, но не записывается содержимое
2. это SelectedIndex, я говорю о выбранном значении
3. закрытая пустота comboBox3_SelectedIndexChanged (отправитель объекта, EventArgs e) { label2.Text = comboBox3.SelectedItem. toString(); }
4. ярлык выдает {System.Data.DataView}
5. @Maziar sharon, похоже, хочет использовать выбранный элемент в combobox для заполнения метки текстом … проблема не в привязке данных к самому combobox … это либо привязка к данным и этой метки, либо получение нужного текста из выбранного элемента
Ответ №4:
toString() наследуется от класса Object. В реализации по умолчанию указано имя класса соответствующего объекта.
возможно, вам захочется преобразовать выбранный элемент в DataRowView, чтобы получить доступ к значениям столбца для этой строки
Пример:
String str = ((DataRowView)comboBox1.SelectedItem)["ColumnNameHere"];