Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
17 / 17 / 8
Регистрация: 21.10.2011
Сообщений: 113
1
.NET 4.x

Вывод нескольких значений из таблицы БД в комбобокс

27.04.2014, 21:32. Просмотров 1653. Ответов 5
Метки нет (Все метки)

Господа, есть таблица, в которой хранятся данные о водителях. (DriverId, TabelNumber, FirstName, MiddleName, SecondName). У меня задача - вывести в комбобоксе фамилию, имя и отчество. Когда пользователь выберет нужного водителя - сохранить в БД DriverId. Использую Entity Framework. Пока получилось вывести только одно имя или фамилию, но нужно всё сразу.

Делаю так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public partial class FrmFuelConsumptionCard : Form
    {
        public FrmFuelConsumptionCard()
        {
            InitializeComponent();
 
            using (GsmModelContainer db = new GsmModelContainer())
            {
                var drivers = db.DriverSet.ToList();
 
                 //в свойствах комбобокса ещё раз выбрал DataSource, 
                //там указал модель Drivers и ту колонку, которую хочу отобразить
                cmbDrivers.DataSource = drivers;
 
            }
        }
    }
Помогите, пожалуйста. Может, что-то неправильно делаю?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2014, 21:32
Ответы с готовыми решениями:

Подгрузка в комбобокс значений из таблицы с фильтром
Добрый день. Подскажите пожалуйста. Есть таблица, из которой в форму подгружается информация. ...

Вывод значений из БД в комбобокс
Kto bx mne podskazal kak sdelat' tak chotbx v combo box vvodilis znachenija iz bazx danih!!!...

Вывод значений в комбобокс
Всем привет, помогите с тупым вопросом) Как в комбобокс вывести значения переменных? Не могу нигде...

Вывод в комбобокс дбгрида столбцов другой таблицы
Прочел очень много тем, но ответа так и не нашел, нужно чтобы в выпадающем списке дбгрида,...

5
6815 / 5956 / 2708
Регистрация: 14.04.2014
Сообщений: 25,504
27.04.2014, 22:15 2
ComboBox не умеет отображать несколько полей одновременно. Или объединяй их в SQL запросе или формируй вручную в DataTable.
0
17 / 17 / 8
Регистрация: 21.10.2011
Сообщений: 113
27.04.2014, 22:40  [ТС] 3
Да пробую уже объединять в запросе, но что-то не получается.
Делаю так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
public FrmFuelConsumptionCard()
        {
            InitializeComponent();
 
            using (GsmModelContainer db = new GsmModelContainer())
            {
                var drivers = db.DriverSet.SqlQuery("SELECT [DriverId],  [SecondName] + ' ' + [FirstName] + ' ' + [MiddleName]  as FIO FROM [GSM].[dbo].[DriverSet]").ToList();
 
                cmbDrivers.DataSource = drivers;
                cmbDrivers.DisplayMember = "FIO";
                cmbDrivers.ValueMember = "DriverId";   
            }
но тогда получаю эксепшен: The data reader is incompatible with the specified 'GsmModel.Driver'. A member of the type, 'TabelNumber', does not have a corresponding column in the data reader with the same name.

тогда переписываю запрос таким образом (коряво, конечно):

C#
1
var drivers = db.DriverSet.SqlQuery("SELECT [DriverId], [TabelNumber], [SecondName], [FirstName], [MiddleName], [SecondName] + ' ' + [FirstName] + ' ' + [MiddleName]  as FIO FROM [GSM].[dbo].[DriverSet]").ToList();
Эксепшены пропадают, но
C#
1
cmbDrivers.DisplayMember = "FIO";
не работает. В комбобоксе отображаются только DriverId

Можете с этим помочь?
0
6815 / 5956 / 2708
Регистрация: 14.04.2014
Сообщений: 25,504
27.04.2014, 22:55 4
Загрузи весь результат в DataGridView и посмотри, получилась ли выборка как ты хотел.
0
17 / 17 / 8
Регистрация: 21.10.2011
Сообщений: 113
27.04.2014, 23:23  [ТС] 5
В итоге вывод ФИО в комбобоксе сделал так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 public FrmFuelConsumptionCard()
        {
            InitializeComponent();
 
            using (GsmModelContainer db = new GsmModelContainer())
            {
                var drivers = db.DriverSet.ToList();
 
                for (int i = 0; i < drivers.Count; i++)
                {
                    drivers[i].SecondName += " " + drivers[i].FirstName + " " + drivers[i].MiddleName;
                }
 
                cmbDrivers.DataSource = drivers;
                cmbDrivers.DisplayMember = "SecondName";
                cmbDrivers.ValueMember = "DriverId";
            }
        }
По крайней мере работает. Поправьте, если можно сделать лучше (желательно с примерами).
0
6815 / 5956 / 2708
Регистрация: 14.04.2014
Сообщений: 25,504
28.04.2014, 07:41 6
drivers - это что за класс?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2014, 07:41

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

SQL. Вывод значений из таблицы и подсчет количества этих значений в другой таблице
Задание звучит так: Для таблиц user и phones, где соответствие записей определяется равенством...

Запись нескольких значений в поле таблицы
Добрый день! В таблице есть поле, в которое можно занести несколько значений типа 'text', и есть...

Update нескольких значений из другой таблицы
Всем привет.Подскажите пожалуйста как можно сделать такой запрос. Есть таблица A и таблица B, надо...

вывод нескольких значений
Мне нужно построить график зависимости b от w(b), а я могу вывести только одно значение. Как...

Не могу разобраться с удалением нескольких значений таблицы
Есть таблица t_advShedule В ней есть такие строки, которые я планирую удалить одним запросом: ...

Выборка сразу нескольких значений с одной таблицы
Добрый день. Нужна помощь. Есть ужасная таблица с кучей информации. Хочу вытянуть определенные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.