| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > ComboBox и DataSet |
| Автор: qweasd 14.4.2009, 10:42 | ||
| Здравствуйте! Сделал так:
Хочу чтобы в ComboBox отображалось значения 3х столбцов из бд НО при этом каждому значению в ComboBox соответствовал его id из БД(не хочется после выбора в ComboBox запросом искать в БД значение id). Как это сделать? |
| Автор: qweasd 14.4.2009, 15:57 | ||
Но не отобразит все 3 столбца в ComboBox, а только один "Firstname". А вот это выведет все 3 столбца но без привязки к id:
а я хочу скомбинировать 3 столбца и привязка к id))) |
| Автор: Экскалупатор 14.4.2009, 16:26 |
| можно попробовать сделать вычисляемый столбец(соеденить в нем значения из трех нужных) и его уже отобразить в ComboBox, он будет привязан по Id. как мне кажется... |
| Автор: -Mikle- 14.4.2009, 16:52 | ||||||
Так и надо сделать, либо в SQL запросе сразу. SQL:
Вычисляемый столбец:
|
| Автор: qweasd 15.4.2009, 12:58 | ||||
Я так понимаю прийдется выбирать, а потом искать соответствующий id ((((((((((((((( Может в ComboBox можно както скрыть часть введенного текста |
| Автор: Idsa 15.4.2009, 13:06 | ||
Можно просто переопределить ToString(). Правда, строчки
нужно убрать: нам нужно, чтобы баиндился сам объект. А вообще, используйте WPF: там подобные вещи делаются гораздо удобнее. |
| Автор: Экскалупатор 15.4.2009, 13:13 | ||
не совсем понял что вы имеете ввиду. если вы сделаете вычисляемый столбец в таблице, он будет работать так же как и любой другой столбец этой таблицы(не важно по порядку или нет идет Id), т.е. и по Id сортироваться тоже будет и если вы делаете привязку его по Id то все будет работать так же как и с нормальным столбцом(любым из этой таблицы), просто в этом столбце, будут содержаться объединенные данные из нескольких столбцов. или я вас все таки не правильно понял? |
| Автор: qweasd 15.4.2009, 14:26 |
| Что такое "вычисляемый столбец" Добавлено через 6 секунд Что такое "вычисляемый столбец"? Добавлено через 10 секунд Что такое "вычисляемый столбец"? |
| Автор: Idsa 15.4.2009, 14:33 |
| qweasd, вычисляемые столбцы - не лучшее решение. Запросы в базу в общем случае не должны зависеть от слоя представления. Если у Вас есть таблица invent.fullname, и есть запрос, который возвращает значения из нее, нужно воспользоваться именно им (ну или создать отдельный, который возвращает меньшее количество атрибутов), но не нужно создавать запросы в угоду отображению: это сделает DAL уродливым и неудобным. Если Вам не хватает возможностей отображения WinForms, переходите на WPF. Если нет желания переходить на WPF, считывайте значения в какой-нибудь класс с переопределенным ToString (в WinForms ComboBox отображает ToString() забаинденного объекта). |
| Автор: qweasd 15.4.2009, 14:36 |
| С помощью WPF - возможна такая реализация? |
| Автор: Экскалупатор 15.4.2009, 14:37 |
| qweasd, если вам к примеру нужно отобразить значения из нескольких столбцов, и работать с этими значениями как с одним столбцом, то вы создаете запрос к базе(ну или прямо в DataSet) и создаете как бы виртуальный столбец, в котором содержаться нужные вам данные, и работаете уже с ними(это делается для того что бы не выбирать по очереди нужные данные, а сразу получить объединенные данные, которые нужны вам). |
| Автор: qweasd 15.4.2009, 14:42 | ||
- это решение основано на том что я в БД создаю еще одну таблицу. Павельно я понял? |
| Автор: Idsa 15.4.2009, 14:49 |
Да. ComboBox.ItemTemplate Кстати, если уж и использовать вычисляемые столбцы, то делать это стоит на клиенте, создав в DataTable дополнительный столбец и задав ему Expression, который конкатенировал бы значения 3-х столбцов. P. S. Реализация тривиального DAL через DataSet/DataTable на современном этапе развития .NET меня несколько выводит из себя. Не обращайте внимания: я могу быть немного неадекватен |
| Автор: qweasd 15.4.2009, 14:55 | ||
Ага спасибо. Сейчас попробую.
- оо вот так вот получилось то что хотел))) САСИБО. Это оптимальный способ или есть чтото лучше? |
| Автор: Экскалупатор 15.4.2009, 16:08 | ||
нет. в БД вы ничего не создаете, вы запрашиваете из БД данные в виде столбца содержащего в себе объединенные данные тех столбцов которые вам нужны(реально в базе такого столбца существовать не будет), но в датасет он будет воспринят как реально существующий. |
| Автор: -Mikle- 15.4.2009, 22:54 | ||||
А я и Экскалупатор что мы предлагали вам сразу в превых же ответах?
Поддерживаю, меня тоже... видимо я тоже могу быть не адекватен [quote=Idsa, 15.4.2009, 16:06, post1843157]А вообще, используйте WPF: там подобные вещи делаются гораздо удобнее[/quote Поддерживаю на все 100%. Я сейчас вообще не использую WinForms, только WPF. |
| Автор: qweasd 16.4.2009, 09:51 |
| Огромное всем спасибо. Да когдато разбирался в WPF - понравилось но на практике мало юзаю - больше пишу на С++(API MFC). |