Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Как в ячейке DataGrid вставить ComboBox Добавлено: 09.10.06 20:09  

Автор вопроса:  igrek | ICQ: 412847431 
пишу прогу, нужно чтобы в ячейке DataGrid выпадал список
. зная что вызывается Private Sub DataGrid1_ButtonClick(ByVal ColIndex As Integer)
а дальше как
Очень прошу помогите

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 _ICE_



ICQ: 354-671-214 

Вопросов: 18
Ответов: 103
 Профиль | | #1 Добавлено: 10.10.06 17:10
Это делается довольно просто. Но не так, как ты думаешь.
У ДатаГрида нет возможности вывести комбобокс в поле. Его ты должен вывести сам. КАК:
1. Добавляем элемент управления КомбоБокс. Свойству Visible = False.
2. При наступлении события активации нужной тебе ячейки (щелчке мыши, нажатии Enter и др) берем координаты этой ячейки: .Columns.Item(Номер колонки, в которой находится ячейка).Left и Rows.Item(Номер строки).Top, а также размеры .Width и .Height.
3. Пишем следующее: ComboBox1.Left = координата .Left ячейки, .Top = Координата .Top и т.д. После этого свойству .Visible комбобокса присваиваем True. Не забудь обработать событие потери фокуса ячейкой и убрать из нее комбобокс, а также отследить событие прокрутки таблицы. Попробуй разобраться сам.
4. В комбобоксе можешь вывести все что необходимо, после потери фокуса ячейкой записываем в нее значение, выбранное в комбобоксе. Все.

Все проверено и все возможно, но есть один маленький трабл: У комбобокса есть такая фича: у него есть жестко фиксированная минимальная высота, и она довольно большая, так что скорее всего тебе придется увеличить высоту строк в ДатаГриде. Другим вариантом является временное увеличение высоты строки, в которой сейчас производится редактирование. Если этого не сделать, то комбобокс будет заходить на соседнюю строку.

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

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам