powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Зависимый combobox в DataGridView
19 сообщений из 19, страница 1 из 1
Зависимый combobox в DataGridView
    #39032178
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго времени суток!

На форме есть DataGridView(DataGridView1). Добавляю в него 2 combobox-а. В первом - тип прибора, во втором- прибор.
Каким образом сделать, чтобы при выборе значения в первом combobox, во втором отфильтровывались значения.
На одиночной форме могу, ведь там combobox в списке контролов отображен, т.е. есть его события. А вот в DataGridView не могу понять как.

Что есть сейчас.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
  
   Dim ds1 As New DataSet
   Dim ds2 As New DataSet
   Dim cmbTypeDevice As New DataGridViewComboBoxColumn()
   Dim cmbNameDevice As New DataGridViewComboBoxColumn()
   Dim i as integer

   connection.Open()
   With DataGridView1     
     cmbTypeDevice.HeaderText = "Тип прибора"
     cmbNameDevice.HeaderText = "Наименование прибора"
     .Columns.Add(cmbTypeDevice) : cmbTypeDevice.FlatStyle = FlatStyle.Flat
     .Columns.Add(cmbNameDevice) : cmbNameDevice.FlatStyle = FlatStyle.Flat
   End With   
   
   Dim da1 As New OleDbDataAdapter("Select TypeDevice,id From tblTypeDevice Where Status=True Order By TypeDevice ASC", connection)
   Dim da2 As New OleDbDataAdapter("Select nDevice,id From tblNameDevice Where idTypeDevice=" & i & " Order By NameDevice ASC", connection)
   da1.Fill(ds1, "tblTypeDevice")
   da2.Fill(ds2, "tblNameDevice")
   With cmbTypeDevice
        .DataSource = ds1.Tables(0)
        .DisplayMember = "TypeDevice"
        .ValueMember = "id"
   End With
   connection.Close



Спасибо.
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39032209
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно всякие фильтры ставят над гридвью, в крайнем случае - справа-слева, а не внутри.
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39032217
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris , спасибо, что ответили.
В данном случае реализую на основной форме, - подчиненные записи(один-ко-многим).
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39032231
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточню. Речь идет о том, чтобы потом внести это все в две таблицы(главную и подчиненную) в БД.
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39032331
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые, неужели никто не делал никогда? Стандартная схема ведь, когда на главной - подчиненные записи есть/вносятся. Кто как добавляет данные в бд в таком случае, если не так?
Так много вариантов, я прям растерялся...
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39032348
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agapov_stasКто как добавляет данные в бд в таком случае, если не так?

Лично я делаю два грида - главный и подчиненный
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39032352
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris , отлично. И что, в гриде только textbox-ы?
Есть зависимые combobox?
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39032365
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agapov_stas,
зависимые - это привязанные к полю? есть
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39032371
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris , зависимые/каскадные/привязанные.
Выбрал в первом комбо тип прибора, во втором - отображены приборы этого типа.
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39032374
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris есть
Как реализовано, можете показать?
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39032408
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agapov_stasВыбрал в первом комбо тип прибора, во втором - отображены приборы этого типа.

Первое комбо я размещаю вне грида, оно работает как фильтр. Не знаю, что вам показать
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39032428
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisПервое комбо я размещаю вне грида, оно работает как фильтр. Не знаю, что вам показать
Мы о разном говорим. Вы говорите за комбо которое вне грида, я же говорю о ситуации когда два комбо находятся в гриде . Речь не о фильтрации данных, а о внесении.
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39032432
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выше приложен пикчер, о котором видимо имеете ввиду Вы.
Я говорю о:
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39032446
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agapov_stas,

тема много раз поднималась.
Делаем два BindingSource. К каждому привязан свой ComboBox. Устанавливаешь у comboBox свойства DataPropertyName, DisplayMember, ValueMember. Всё!
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39032462
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikтема много раз поднималась.
Делаем два BindingSource. К каждому привязан свой ComboBox. Устанавливаешь у comboBox свойства DataPropertyName, DisplayMember, ValueMember. Всё!
Покажите, если не сложно. Потому как, Вы видимо, говорите за одиночную форму. Это мы умеем. В гриде - нет пока.
Если все так легко и Вы знаете как сделать, неужели так сложно пример показать?
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39032543
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agapov_stas,

неужели так сложно погуглить?
17093927 Да, это не совсем то, но суть та же самая.
Могу показать пример на C#.
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39032829
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvikAgapov_stas,

неужели так сложно погуглить?
17093927 Да, это не совсем то, но суть та же самая.
Могу показать пример на C#.
petalvik, спасибо за внимание, но то, что Вы предложили никак не относится к моему вопросу.

Вот похожий вопрос, буду тут и копать.

P.S. Надеюсь, все -таки кто-то откликнется.
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39033329
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agapov_staspetalvik, спасибо за внимание, но то, что Вы предложили никак не относится к моему вопросу.
Ещё как относится. Вы главное два BindingSource создайте и сделайте привязку через них. У них и события можно будет использовать, паче возникнет такая необходимость.
...
Рейтинг: 0 / 0
Зависимый combobox в DataGridView
    #39033620
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvik , не сразу обратил внимание о чем Вы имели ввиду в указанной ссылке. Беру свои слова обратно.
Сделал, только немного иначе(не увидел смысла привязывать именно binding к первому комбо).
На Load формы:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
            Dim cmbTypeDevice As New DataGridViewComboBoxColumn
            Dim cmbNameDevice As New DataGridViewComboBoxColumn
            Dim da1 As New OleDbDataAdapter("Select * From tblTypeDevice", connection)
            Dim da2 As New OleDbDataAdapter("Select * From tblNameDevice", connection)
            Dim dt1 As New DataTable
            Dim dt2 As New DataTable
            da1.Fill(dt1)
            da2.Fill(dt2)
            ds.Tables.Add(dt1)
            ds.Tables.Add(dt2)

            With cmbTypeDevice
                .DataSource = ds.Tables(0)
                .DisplayMember = "TypeDevice"
                .ValueMember = "id"
                .FlatStyle = FlatStyle.Flat
            End With

            DataGridView1.Columns.Add(cmbTypeDevice)
            DataGridView1.Columns.Add(cmbNameDevice)


В событии DataGridView1_EditingControlShowing:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
            If DataGridView1.CurrentCell.ColumnIndex = 1 Then
                Dim control As ComboBox = CType(e.Control, DataGridViewComboBoxEditingControl)
                Dim bs As New BindingSource
                bs.DataSource = ds.Tables(1)
                bs.Filter = "idTypeDevice=" & Convert.ToInt32(DataGridView1.CurrentRow.Cells(0).Value.ToString()) & ""
                With control
                    .DataSource = bs
                    .DisplayMember = "nDevice"
                    .ValueMember = "id"
                    .FlatStyle = FlatStyle.Flat
                End With
            End If



Работает, но есть пара нюансов.
1. Когда "кликаешь" на комбо в гриде, то не сразу открывается список значений, только на 3 раз.
2. После того как выбрать значение в первом и втором комбо, а затем перейти на следующую запись/строку, то выдает сообщение/ошибку(см. аттач) и во втором комбо пропадает значение(которое введено было в первой записи)

Как исправить эти "эффекты" или что делаю не так?
Спасибо!
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Зависимый combobox в DataGridView
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]