|
4 / 4 / 0
Регистрация: 10.07.2017
Сообщений: 52
|
|
Разные ComboBox в одной колонке DataGridView?08.06.2020, 19:44. Показов 3467. Ответов 22
Здравствуйте.
Возможно ли, в зависимости от условия, в разных строках столбца со списками выводить, например: либо {"0", "2", "3", "4"}, либо {"a", "b"}, либо сделать единый список для всех, {"0", "2", "3", "4", "a", "b"}, но фильтровать его для разных строк по условию? Или как-то еще?.. Сейчас это реализовано в виде редактора строки на отдельной форме, где есть 2 списка, один из которых блокируется в зависимости от условия строки. Хотелось бы отказаться от этой формы.
0
|
|
| 08.06.2020, 19:44 | |
|
Ответы с готовыми решениями:
22
VB.Net Datagridview нет доступа к данным в одной колонке DataGridView. Подсчет всех значений в одной колонке.Вывод в Текст бокс Разные стили в одной колонке вьюхи |
| 08.06.2020, 19:59 | ||||||
|
Ну, а почему бы и нет.
0
|
||||||
|
4 / 4 / 0
Регистрация: 10.07.2017
Сообщений: 52
|
|||||||||||
| 08.06.2020, 22:22 [ТС] | |||||||||||
|
Uswer, спасибо за быстрый отклик!
Красиво, но чего-то не работает. В предложенном варианте, на 14-й строке:
"Если для DropDownStyle задано ComboBoxStyle.DropDownList, а для AutoCompleteMode не задано AutoCompleteMode.None, может использоваться только значение AutoCompleteSource.ListItems" Пробовал разные комбинации с AutoComplete... в том числе .DropDownStyle менял на ComboBoxStyle.DropDown (по умолчанию он DropDownList) исключение исчезает, но список не меняется - либо остается тем же, если заранее инициализировался, либо пустой. Проверял в отладчике - сам код построчно отрабатывает нормально, но безрезультатно. Фантазия истощилась, а знаний не хватает - куда копать... Добавлено через 36 минут И еще хотелось бы заранее инициализировать видимое значение каждого списка на этапе подготовки DGV. Добавлено через 10 минут Вроде этого:
0
|
|||||||||||
| 09.06.2020, 00:40 | ||||||
|
Извини поторопился, тот код больше для TextBox-а подходит.
0
|
||||||
|
Модератор
4359 / 3429 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
|
|
| 09.06.2020, 03:39 | |
|
SSL-13, а какое должно быть условие изменения списка ComboBox, напрммер? И где набор строк для ComboBox должен храниться для каждой строки?
0
|
|
|
4 / 4 / 0
Регистрация: 10.07.2017
Сообщений: 52
|
||||||||
| 09.06.2020, 04:07 [ТС] | ||||||||
|
Yury Komar,
Например: число или дата... В 1-м случае нужно дать пользователю выбрать разрядность, (причем, желательно с запретом больше 0 для целых), во втором - прямое или реверсное отображение даты. После выбора нового значения в списке, на его основе предполагается изменение значений 3-ей, служебной колонки. Пример Uswer,
0
|
||||||||
|
Модератор
4359 / 3429 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
|
|
| 09.06.2020, 04:08 | |
|
Понял.
0
|
|
|
4 / 4 / 0
Регистрация: 10.07.2017
Сообщений: 52
|
|||||||||||||
| 09.06.2020, 05:25 [ТС] | |||||||||||||
|
У меня такая же ошибка была, когда в список передавал не строковые, а числовые значения. Правда тут что-то другое, но видимо тоже связано со способом инициализации списка. И еще - в предложенном примере происходит реинициализация одного и того же списка. При таком подходе вряд ли получится заранее отобразить значения из разных списков, т.к. соответствующие проверки должны быть проведены на уровне первичной инициализации DGV. ДА и в дальнейшем - в разных строках должны отображаться значения из разных списков, (по соответствующему условию). Например, если задаем изначальный дефолт:
Правда это прокатит только в том случае, если DGV все же допускает существование 2-х списков, или отображение некоторых значений, не соответствующих текущему... возможно из-за этого и ошибка? PS Вот еще не пойму, как обратиться к Combobox в DGV не в событии как в примере, (из его аргументов), а на уровне любой процедуры:
0
|
|||||||||||||
|
Модератор
4359 / 3429 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
|
|
| 09.06.2020, 06:24 | |
|
SSL-13, а может быть не использовать тип колонки ComboBox? А взять обычный TextBoxColumn? А при вызове EditingControl перехватывать это и на месте ячейки показывать обычный ComboBox со всем необходимым? Таким образом в таком комбобоксе может быть все что душе вашей угодно.
0
|
|
|
4 / 4 / 0
Регистрация: 10.07.2017
Сообщений: 52
|
|
| 09.06.2020, 06:50 [ТС] | |
|
Yury Komar, ну если ответ на основной вопрос отрицательный, согласен, - идея здравая.
Перехват с TextBoxColumn видимо на уровне DGV.CellBeginEdit с подсовыванием программного ComboBox... (или перетащить готовый скрытый?) Примерчик бы, или несколько строк кода - как получить координаты и размеры .CurrentCell? Чтоб долго не рыться в справочниках и тестах... )) PS Нынче могу отъехать на неск. дней - возможна задержка с ответами.
0
|
|
| 09.06.2020, 14:44 | ||||||||||||
|
SSL-13, ну и задали Вы задачку!
Заработало только такое решение Кликните здесь для просмотра всего текста
При создании колонки Грида добавляем все возможные значения, которые в ней могут быть размещены, а затем при входе в редактирование просто удаляем лишнее. Обратите внимание, что тип всех значений должен быть один. Если к Гриду привязана таблица, то типы столбца таблицы, со значениями для колонки DataGridViewComboBoxColumn, и значений самой колонки должны совпадать. Кроме того, для колонки DataGridViewComboBoxColumn необходимо задать свойство DataPropertyName = имени столбца таблицы. Добавлено через 25 минут
0
|
||||||||||||
|
4 / 4 / 0
Регистрация: 10.07.2017
Сообщений: 52
|
||||
| 09.06.2020, 16:30 [ТС] | ||||
|
Ну и задачка нетривиальная, + таблица нестандартная = сохраняемая в файл-шаблон... от правил которого трудно отойти: в одном столбце даты и числа, которые растаскиваются на 3 формата, а последние записываются в служебную колонку: - Дробные числа, (для них из списка выбирается разрядность), - Дата/время, (из списка - дата как есть, или реверсная - год впереди) - Целые или только время (= ""). В последнем случае, если есть такая возможность, было бы идеально прикрутить к отдельной ячейке ComboBox типа .Enable = False или придется просто удалить все значения из списка кроме "0"... Вернусь за комп через 2-3 дня, буду разбирать - куча нового для меня, спасибо!
0
|
||||
| 09.06.2020, 20:39 | ||||||
|
Да простит меня модератор, ну не смог остановиться.
Слегка изменённый вариант под нужды ТСа. Кликните здесь для просмотра всего текста
Я так и не понял как добиться того, чтобы в ячейку можно было помещать любые значение, а не только те, что определены в CellTemplate. Может кто подскажет?
1
|
||||||
|
Модератор
4359 / 3429 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
|
|
| 10.06.2020, 02:46 | |
|
Uswer,
Не по теме: а что такого противоправного вы сделали, за что просите прошения? :)
0
|
|
|
dive
4961 / 4654 / 845
Регистрация: 13.04.2015
Сообщений: 9,848
|
|||||||
| 10.06.2020, 08:43 | |||||||
Сообщение было отмечено Yury Komar как решение
Решение
3
|
|||||||
|
dive
4961 / 4654 / 845
Регистрация: 13.04.2015
Сообщений: 9,848
|
|
| 10.06.2020, 09:02 | |
|
1
|
|
| 10.06.2020, 12:25 | |
|
Как всё просто оказалось. Спасибо I can. Но я так и не понял, можно ли сделать ввод в ComboBox значений вне диапазона, по аналогии с обычным ComboBox в режиме DropDown, т.е. с вводом значений пользователем.
0
|
|
|
dive
4961 / 4654 / 845
Регистрация: 13.04.2015
Сообщений: 9,848
|
||
| 10.06.2020, 12:33 | ||
Нельзя пользователю давать вводить что попало, ничем хорошим это не заканчивается
1
|
||
|
Модератор
4359 / 3429 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
|
|
| 10.06.2020, 18:09 | |
|
Uswer, я думаю стандартная ячейка ComboBoxCell такого не умеет, и поэтому, как я и писал выше, нужно в месте текущей ячейки динамически создавать (или иметь уже созданный, но спрятанный) обычный WinForms'ный ComboBox и отображать его а при смене фокуса - прятать или удалять, с переносом введенных/выбранных значений в текущую ячейку.
К сожалению кодом сейчас не помогу - нет возможности воспользоваться студией, с телефона тут. Поэтому - только идеи и советы
0
|
|
| 10.06.2020, 18:09 | |
|
Помогаю со студенческими работами здесь
20
DataGridView - при выборе элементов в ее ComboBox вызывать разные формы Загрузка данных одной из таблиц в DataGridView в зависимости от выбора в ComboBox Поиск по колонке в DataGridView
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|