Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DataGridViewComboBox ввод с клавиатуры, Ввод данных чреват ошибкой 
:(
    Опции темы
Grandpa
Дата 6.6.2008, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.7.2003
Где: Одесса

Репутация: нет
Всего: нет



В Datagridview имеется колонка типа DataGridViewComboBox, выпадающий список привязан к таблице.

Проблема заключается в том, что когда фокус попадает на ячейку этой колонки и пользователь пытается ввести какое-либо значение, которого нет в списке, то высвечивается самое "похожее" значение в списке. При этом ячейка не переходит в состояние редактирования (нет карандаша). Если пользователь соглашается с отображаемым значением и жмёт tab, то при переходе к следующей ячейке наша ячейка становится пустой (null). "Похожее" значение в ней не остаётся. Чтобы там было значение надо, либо войти в список и выбрать, либо набрать значение, которое есть в списке.

Такое поведение запутывает пользователя. Он видит в ячейки нужное значение, переходит к следующей, а значение в ячейке исчезает!

Можно ли сделать так, чтобы "похожее" значение было занесено в ячейку?

З.Ы. DataGridView сгенерирован из типизированного Dataset.

PM ICQ   Вверх
akizelokro
Дата 6.6.2008, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: нет
Всего: 5



1 вариант. для упрощения работы поменяй стиль комбобокса с DropDown на DropDownList. Тогда ламер совсем не запутается. Но это вариант для ленивых.
2 вариант. напиши обработку какого-нибудь события, чтобы он при выборе даже близкого соответствия жестко изменял значения ячейки.


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
Grandpa
Дата 7.6.2008, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.7.2003
Где: Одесса

Репутация: нет
Всего: нет



akizelokro, спасибо за ответ.

Цитата(akizelokro @ 6.6.2008,  22:31)

1 вариант. для упрощения работы поменяй стиль комбобокса с DropDown на DropDownList. Тогда ламер совсем не запутается. Но это вариант для ленивых.


Этот вариант отнюдь не для ленивых.  smile Начнём с того, что есть DataGridViewComboBox, но нет DataGridViewListBox. А писать своего наследничка DataGridViewCell..., не для ленивых. Можно смоделировать DropDownList, обработав событие Enter и раскрыть список через SendKeys. Тоже не очень..., но можно.


Цитата(akizelokro @ 6.6.2008,  22:31)

2 вариант. напиши обработку какого-нибудь события, чтобы он при выборе даже близкого соответствия жестко изменял значения ячейки.


Все события скрыты в сгенерированном классе. Менять его, как показала практика, себе дороже.


Так, что если никто не подскажет более элегантного решения, придётся через SendKeys.


PM ICQ   Вверх
Grandpa
Дата 8.6.2008, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.7.2003
Где: Одесса

Репутация: нет
Всего: нет



Спасение утопающих, дело рук ...
 smile 
Пока нашёл только такое решение, обрабатываю в Datagriview событие EditingControlShowing
Код

        private void XxxxxDataGridView_EditingControlShowing (object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            ComboBox combo = e.Control as ComboBox;   // достаю контрол combobox
            if (combo != null)
            {
                int x = combo.SelectedIndex;    // запомним индекс
                combo.SelectedIndex = -1;        // ничего не выбрано
                combo.SelectedIndex = x;         // восстановим индекс
            };
        }

Т.е. моделируем движение по списку.
Не уверен, что не будет побочных эффектов.

Если кто может предложить другое решение, буду очень рад.

PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0388 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.