Кроме прямого добавления элементов в коллекцию Items компонентов ListBox и ComboBox мы также можем использовать механизм привязки данных.
Привязка данных в ListBox и ComboBox реализуется с помощью следующих свойств:
DataSource : источник данных — какой-нибудь массив или коллекция объектов
DisplayMember : свойство объекта, которое будет использоваться для отображения в ListBox / ComboBox
ValueMember : свойство объекта, которое будет использоваться в качестве его значения
Итак, на форме у нас есть список ListBox с именем listBox1. В коде имеется класс Phone с тремя свойствами, объекты которого мы хотим выводить в список. В отличие от предыдущих тем эта задача сложнее, так как раньше мы выводили обычные строки, тут же у нас сложные объекты.
Для вывода используем механизм привязки. Сначала устанавливаем список телефонов в качестве источника данных:
Затем устанавливаем в качестве отображаемого свойства свойство Name класса Phone, а в качестве свойства значения — свойство Id:
Значение отображаемого свойства мы затем увидим в списке. Оно будет представлять каждый отдельный объект Phone.
С помощью же свойства значения, которым является свойство Id, мы можем упростить работу с источником данных. В данном случае оно не играет большой роли. Но если бы мы использовали в качестве источника данных некоторый набор объектов из базы данных, то с помощью id нам было проще удалять, обновлять и взаимодействовать с базой данных.
И теперь если мы выделим какой-то объект, то свойство SelectedItem элементы ListBox будет содержать объект Phone, у которого мы можем получить значения свойств:
А выделенное значение, то есть значение свойства >SelectedValue .
И если мы запустим приложение, то увидим все отображаемые телефоны:
Все то же самое характерно и для элемента ComboBox. Пусть кроме ListBoxa на форме есть ComboBox:
Здесь также для комбобокса устанавливается привязка, а также отображаемое свойство и свойство значения. Кроме того, здесь обрабатывается событие выбора элемента в комбобоксе так, чтобы выбранный элемент попадал в ListBox.
В отличие от ListBoxa ComboBox имеет три свойства для обработки выделенного объекта:
SelectedItem : выбранный элемент
SelectedValue : значение свойства значения, в данном случае свойство Id
SelectedText : значение свойства отображение, в данном случае свойство Name класса Phone
Но это и из кода проверить легко.
Как бы ComboBox выводит ToString.Если делать не по helloworldному, то было бы уместным вычитывать информацию из базы в коллекцию экземпляров своего класса для ФИО, и скармливать эту коллекцию комбобоксу. Правда, большинство не заморачивается такими вещами.
В качестве источника берется DataTable и из ее полей выбирается DisplayMember и ValueMember.
Разумеется, источником может быть и класс с полями displayMember и valueMember
это и твоему ежу на аватаре понятно, если DisplayMember == null
Задачка то у автора простейшая, и ему нужно оптимальное решение, а не демонстрация наших знаний о рефлекторах.
Хотелось бы подробнее узнать об этом. И почему мой подход не удачный?
Я хочу добавить все Id из таблицы клиентов в combobox, используя класс, и это мой класс соединения connectionClass, в котором я создал функцию для выбора данных из базы данных. Вторая — это моя клиентская форма (это код клиента, кодирующий customerForm) в который я называю функцией, которую я создал в классе соединений. Но это только показывает последний идентификатор в форме клиента, и я хочу, чтобы все id в combobox
4 ответа
В методе select () вы возвращаете строку, вместо которой вам нужно заполнить базу данных и связать данные со списком.
Вместо string верните List of strings следующим образом:
эта функция возвращает только идентификатор из таблицы Customer. Я хочу использовать несколько данных из таблицы Customer, используя тот же метод. Можете ли вы мне помочь в этом?
Как правило, этот сайт работает не так. Во-первых, вы должны задать конкретный вопрос и показать, что вы сделали. Тогда мы можем вам помочь.
Здесь я попытаюсь дать вам два общих решения для работы с базой данных.
Предположим, вы хотите отобразить все, извлеченные из базы данных, в вашу форму Windows.
Сначала создайте объект DataGridView , назовем его dataGridView1 , Вы можете создать его, используя конструктор, как любой другой элемент управления. затем используйте следующие коды:
Скажем, из таблицы базы данных вы хотите извлечь 3 столбца: ID (INT) , Name (VARCHAR(100)) и Value (VARCHAR(MAX) .
Сначала создайте класс:
Создайте функцию, которая возвращает список клиентов:
Затем вы можете использовать эти данные так, как хотите. Например, чтобы заполнить ваши ComboBox идентификаторами, вы можете использовать это:
@L_JThis является моей формой клиента
Это мой класс подключения, в котором я делаю функцию selectdata из базы данных
Источник: