|
3 / 3 / 2
Регистрация: 30.07.2017
Сообщений: 223
|
|
Combobox vs. DataTable28.09.2017, 10:42. Показов 1458. Ответов 12
Метки нет (Все метки)
Добрый день!
Требуется совет профессионалов новичку . Во время инициализации подключения к БД в DataSet подгружаются данные таблиц-справочников из БД. Есть несколько комбо-боксов, которые используют эти справочники. Проблема в том, что роль у комбо-боксов разная - где-то используются "чистые" значения, где-то добавляется строка "0 (valueMember), Все(displayMember)" для сброса фильтра. Выходов из ситуации вижу два: 1. Дублировать в датасете таблицы-справочники (одна таблица как в БД, вторая с доп. строкой). Наверно, это способ не очень хорош по причине этого самого дублирования. 2. Осуществлять привязку к комбо-боксам не DataTable, а построчно обрабатывать и добавлять данные в комбо-бокс. Только не очень самому понятно как это лучше сделать. В общем, вопрос, если кто-то озадачивался нечто подобным: как лучше выйти из этой ситуации, как проработать вариант 2, либо может есть еще какие-то альтернативы?
0
|
|
| 28.09.2017, 10:42 | |
|
Ответы с готовыми решениями:
12
DataTable textbox combobox Выборка в DataTable с использованием comboBox Запрос к связанным таблицам (Access), через Datatable с выводом в два Combobox |
|
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
|
||||||
| 28.09.2017, 14:13 | ||||||
|
wrq2017, установите у комбобокса
0
|
||||||
|
3 / 3 / 2
Регистрация: 30.07.2017
Сообщений: 223
|
|
| 28.09.2017, 14:27 [ТС] | |
|
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
||
| 28.09.2017, 15:04 | ||
|
0
|
||
|
3 / 3 / 2
Регистрация: 30.07.2017
Сообщений: 223
|
||
| 28.09.2017, 15:54 [ТС] | ||
|
Значения такие: 1 - Факт 2 - Бизнес-план 3 - Актуализированный план 4 - Рабочий план (далее на усмотрение пользователя) Данные этой таблицы должны использоваться по-разному. Один раз в комбо-боксе, который является DataGridViewComboBoxCell, собственно в самой основной таблице отражающей данные с возможностью их изменения непосредственно в гриде переключением комбо-бокса. Соответственно, пользователь должен видеть в гриде ячейку с комбо-боксом только указанных значений. С другой стороны, в другом Гриде, который выступает набором фильтров, пользователь должен видеть ячейку с комбо-боксом со значениями: 0 - Все 1 - Факт 2 - Бизнес-план 3 - Актуализированный план 4 - Рабочий план Подключение данных к комбо-боксам (DataGridViewComboBoxCell) происходит через соответствующие DataTable DataSet'a. Но в действующем коде, получается приходится задваивать таблицы с одними и теми же данными, отличающимися лишь первой строкой. Вопрос - как оптимизировать хранение данных? Т.е. не дублировать в ДатаСете одни и те же таблицы.
0
|
||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
|||||||
| 28.09.2017, 16:13 | |||||||
Сообщение было отмечено wrq2017 как решение
РешениеМожно определить класс, скажем ComboBoxItem, и метод, скажем, GetDataSource:
SelectedIndex =0;По сути, мы просто придумали свой convention (про ValueMember =0). Добавлено через 3 минуты Метод можно куда-нибудь в хелперы вынести, или в более подходящее место - все зависит от структуры вашего проекта. Но это будет в UI, поскольку возимся мы ведь с UI-элементами.
1
|
|||||||
|
3 / 3 / 2
Регистрация: 30.07.2017
Сообщений: 223
|
|||
| 28.09.2017, 16:19 [ТС] | |||
|
Отлично! Спасибо, это, наверно, то, что мне и надо
Только предстоит это всё переварить и осмыслить.Можно чуть-чуть подробнее: Добавлено через 43 секунды
0
|
|||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
||||||||
| 28.09.2017, 16:25 | ||||||||
|
Вам там нужно написать что то типа:
1
|
||||||||
|
3 / 3 / 2
Регистрация: 30.07.2017
Сообщений: 223
|
|
| 28.09.2017, 16:30 [ТС] | |
|
И судя по названию IList - это интерфейс. Надо теперь добавить этот интерфейс соответствующим объектам (правильно ли я выразился)?
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
||
| 28.09.2017, 16:34 | ||
|
Нет, ничего не надо делать.
0
|
||
|
3 / 3 / 2
Регистрация: 30.07.2017
Сообщений: 223
|
|
| 28.09.2017, 16:43 [ТС] | |
|
И такой list типа коллекции ComboBoxItem может служить источником данных для комбо-бокса? И более общий вопрос - любая коллекция может служить источником данных для комбо-бокса? Или единственным условием является наличие полей ValueMember и DisplayMember? Или их все равно можно переопределить, т.е. разницы нет?
Короче, у меня (о)сознание сейчас, прям, метра на два расширилось.
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
||
| 28.09.2017, 16:54 | ||
|
wrq2017, почитайте документацию. ValueMember и DisplayMember - это просто свойства ComboBox-а и похожих контролов (ListBox, вроде бы), где указываются имена свойств объектов, которые находятся в коллекции. ValueMember - свойство, которое будет хранится внутри элемента ComboBox-a, которое можете использовать для своей логики. DisplayMember - свойство, которое надо показать пользователю.
1
|
||
|
3 / 3 / 2
Регистрация: 30.07.2017
Сообщений: 223
|
|||||||
| 29.09.2017, 09:31 [ТС] | |||||||
|
Но выражение ...OfType<DataRow>... вызывает ошибку "... является "метод", который недопустим в данном контексте". Ключевое слово Select не подсвечивается. Что не так? Добавлено через 15 минут Всё! Поправил. Спасибо за ваши ответы, полный код таков:
0
|
|||||||
| 29.09.2017, 09:31 | |
|
Помогаю со студенческими работами здесь
13
Как реализовать привязку ComboBox к DataTable? Два combobox от одного datatable с Select Два ComboBox`a, которые используют один DataTable Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|