Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 69

Как при загрузке формы в combobox'е автоматически выставить значения из скрытого столбца

07.02.2014, 17:00. Показов 2097. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет,

Заполнил datagridview из mssql - ok
Создал DataGridViewComboBoxColumn() данные из sql запроса -ok
VB.NET
1
2
3
4
5
6
7
8
9
10
 
Column.DisplayMember = "name"
Column.ValueMember = "key"
 
и
 
DataGridView1.Columns(1).Visible = False ' -  это text поле при заполнении dgv вместо которого
' был добавлен combobox в данном столбце были строки 
'со значениями 0 или 1 или 2 соответственно во  втором
' sql запросе к combobox key 1,2,3 = названиям
Вопрос как при загрузке формы в combobox'е автоматически выставить значения из скрытого столбца(суть-понятна)?

Возможно что-то не так делаю? Возможно какие-то наставления/примеры как работать с DataGridViewComboBoxColumn

Если данная тема для вас не нова, и ответ для вас банален, уделите пару минут - опишите решение, ОГРОМНОЕ СПАСИБО
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2014, 17:00
Ответы с готовыми решениями:

Как в ПолеСоСписком автоматически при загрузке Формы подставить первое значение
Здравствуйте, подскажите пожалуйста Как в ПолеСоСписком автоматически при загрузке Формы подставить первое значение (оно же...

Как взять из скрытого тега значение value и поместить в гет-переменную при загрузке страницы?
Очень плохо разбираюсь в php, в основном всё делаю по примерам. Необходимо при загрузке страницы, схематический вид которой приведён ниже,...

Вывод в TextBox значения скрытого столбца Datagridview
Добрый день. Помогите решить проблему: на форме в C# есть datagridview, в него заносятся значения из базы данных (но это не важно). В общем...

13
07.02.2014, 18:08

Не по теме:

и вроде тема не нова... и прочитал 7 раз... но, блин, ничего не понял (ох уж эти запятые :()

0
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 69
07.02.2014, 18:57  [ТС]
gets - подключение к mssql(все норм)
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim ds As DataSet = Gets()
            DataGridView1.DataSource = ds.Tables("table1")
            DataGridView1.Columns.Remove("Type")
            Dim listCol As New DataGridViewComboBoxColumn()
            listCol.DisplayIndex = 1
            listCol.HeaderText = "sltype"
            listCol.DataPropertyName = "Type" ' вот на это ругается(
 
 
            listCol.DataSource = ds.Tables("table2")
            listCol.DisplayMember = "name"
            listCol.ValueMember = "key"
            DataGridView1.Columns.Add(listCol)
Выдает ошибку "недопустимое значение datagridviewcomboboxcell"

Сталкивался кто с этим? Может есть какие-то свои варианты этих combobox
Заранее - благодарен))
0
 Аватар для dimsaratov
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
07.02.2014, 20:03
Цитата Сообщение от vej00522 Посмотреть сообщение
listCol.DataPropertyName = "Type" ' вот на это ругается(
Недопустимое Имя Type
0
 Аватар для KolunyaZ
140 / 98 / 20
Регистрация: 11.03.2013
Сообщений: 147
07.02.2014, 22:47
Цитата Сообщение от dimsaratov Посмотреть сообщение
Недопустимое Имя Type
у меня работает и с Type если просто создаю DataTable ручками - скорее всего "заморочка" приходит из подключения к mssql...а вообще, да, не рекомендуется поля БД обзывать ключевыми словами СУБД
0
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 69
10.02.2014, 10:18  [ТС]
про поля спасибо, может дать кто нибудь пример подключения своего? По всей видимости действительно с подключением что-то напутал, но на экран отображается таблица
0
 Аватар для KolunyaZ
140 / 98 / 20
Регистрация: 11.03.2013
Сообщений: 147
10.02.2014, 13:30
если речь о мускуле, пользую коннектор

подключаюсь так
0
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 69
10.02.2014, 18:25  [ТС]
У меня тоже работает) но не совсем так как хотелось бы. При открытии формы - заполняется dgv, в столбце combobox отображаются цифры(а должны названия из sql запроса для combobox) При выборе значения combobox открываются названия, выбираем название и combobox вместо названий отображает уже другую цифру.
Как бы мне заменить цифры на названия в течение всего грида? А не только на стадии выбора в combobox ?
0
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 69
11.02.2014, 18:30  [ТС]
Всё ещё очееень актуально!
0
 Аватар для dimsaratov
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
11.02.2014, 19:41
Выложи проект
Если правильно прописал DisplayMember и ValueMember такого быть не может
0
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 69
12.02.2014, 15:40  [ТС]
проект очень огромный, и этот dgv его маленькая часть. combobox заполняется отдельным sql запросом(не связанным с кодом datagridview)
DisplayMember - то что отображаем на экран(но работает в момент нажатия на выбор в комбобоксе)
ValueMember - цифры(которые связывают выбранное значение с датагридом) - на экране отображаются только в момент просмотра датагрида.

Вопрос ещё, как заставить работать combobox по такому же принципу но значения его указать в коде? а не из sql запроса?

Добавлено через 3 часа 53 минуты
С выводом в combobox из sql разобрался - спасибо, всё работает!

Как задать значения combobox в коде? Не из sql запроса? Должно выглядеть как имитация базы, т.е. что бы мог указать и key и name для .DisplayMember .ValueMember
0
 Аватар для KolunyaZ
140 / 98 / 20
Регистрация: 11.03.2013
Сообщений: 147
12.02.2014, 16:36
Лучший ответ Сообщение было отмечено vej00522 как решение

Решение

вот "тренировочный" вариант:
VB.NET
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim DT1 As New DataTable ' Допустим, это таблица заказов
 
        DT1.Columns.Add("ID")
        DT1.Columns.Add("Date")
        DT1.Columns.Add("ProductID") 'Тут лежит ID продукта из таблицы ниже
 
        Dim DT2 As New DataTable ' А это таблица продуктов
 
        DT2.Columns.Add("ID")
        DT2.Columns.Add("Product_Name")
 
        'Заполняем табличку 1 
        DT1.Rows.Add()
        DT1.Rows(DT1.Rows.Count - 1).Item("ID") = 1
        DT1.Rows(DT1.Rows.Count - 1).Item("Date") = #1/1/2014#
        DT1.Rows(DT1.Rows.Count - 1).Item("ProductID") = 1
        DT1.Rows.Add()
        DT1.Rows(DT1.Rows.Count - 1).Item("ID") = 2
        DT1.Rows(DT1.Rows.Count - 1).Item("Date") = #1/4/2014#
        DT1.Rows(DT1.Rows.Count - 1).Item("ProductID") = 2
        DT1.Rows.Add()
        DT1.Rows(DT1.Rows.Count - 1).Item("ID") = 3
        DT1.Rows(DT1.Rows.Count - 1).Item("Date") = #1/5/2014#
        DT1.Rows(DT1.Rows.Count - 1).Item("ProductID") = 3
        DT1.Rows.Add()
        DT1.Rows(DT1.Rows.Count - 1).Item("ID") = 4
        DT1.Rows(DT1.Rows.Count - 1).Item("Date") = #1/7/2014#
        DT1.Rows(DT1.Rows.Count - 1).Item("ProductID") = 2
        DT1.Rows.Add()
        DT1.Rows(DT1.Rows.Count - 1).Item("ID") = 5
        DT1.Rows(DT1.Rows.Count - 1).Item("Date") = #1/8/2014#
        DT1.Rows(DT1.Rows.Count - 1).Item("ProductID") = 1
 
        'Заполняем табличку 2
        DT2.Rows.Add()
        DT2.Rows(DT2.Rows.Count - 1).Item("ID") = 1
        DT2.Rows(DT2.Rows.Count - 1).Item("Product_Name") = "Продукт №1"
        DT2.Rows.Add()
        DT2.Rows(DT2.Rows.Count - 1).Item("ID") = 2
        DT2.Rows(DT2.Rows.Count - 1).Item("Product_Name") = "Продукт №2"
        DT2.Rows.Add()
        DT2.Rows(DT2.Rows.Count - 1).Item("ID") = 3
        DT2.Rows(DT2.Rows.Count - 1).Item("Product_Name") = "Продукт №3"
 
 
        ' Вяжем бантик
        DataGridView1.DataSource = DT1
        DataGridView1.Columns.Remove("ProductID")
        Dim listCol As New DataGridViewComboBoxColumn()
        listCol.HeaderText = "Нормальное название продукта"
        listCol.DataPropertyName = "ProductID" 
 
 
        listCol.DataSource = DT2
        listCol.DisplayMember = "Product_Name"
        listCol.ValueMember = "ID"
        DataGridView1.Columns.Add(listCol)
 
    End Sub
2
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 69
12.02.2014, 19:20  [ТС]
То что надо, вопрос ещё как преобразовать DT2.Columns.Add("ID") к tinyint ?

Если есть несоответствие типов то combobox отображает значения из первой таблицы(т.е. цифры) если всё норм то текст из второй.
0
 Аватар для dimsaratov
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
12.02.2014, 20:17
Цитата Сообщение от vej00522 Посмотреть сообщение
Если есть несоответствие типов то combobox отображает значения из первой таблицы(т.е. цифры) если всё норм то текст из второй.
Для стандартного DataGridView я решение сам ищу уже давно
Ну и теперь моя вариация кода KolunyaZ
VB.NET
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        Try
            Dim DT1 As New DataTable ' Допустим, это таблица заказов
            DT1.Columns.Add("ID", GetType(Integer))
            DT1.Columns(0).AutoIncrement = True
            DT1.Columns(0).AutoIncrementSeed = 1
            DT1.Columns(0).AutoIncrementStep = 1
            DT1.Columns(0).Caption = "Колонка ID"
            DT1.Columns.Add("Date", GetType(Date))
            DT1.Columns.Add("ProductID", GetType(Integer))
 
            Dim DT2 As New DataTable ' Допустим, это таблица продуктов
            DT2.Columns.Add("ID", GetType(Integer))
            DT2.Columns(0).AutoIncrement = True
            DT2.Columns(0).AutoIncrementSeed = 1
            DT2.Columns(0).AutoIncrementStep = 1
            DT2.Columns(0).Caption = "Колонка ID"
            DT2.Columns.Add("ProductName", GetType(String))
 
            'Заполняем табличку 1 
            Dim startDate As Date = #1/1/2014#
            For i = 1 To 5
                Dim dRow As DataRow = DT1.NewRow
                dRow("Date") = startDate
                dRow("ProductID") = i
                startDate.AddMonths(1)
                DT1.Rows.Add(dRow)
            Next
            'Заполняем табличку 2
            For i = 1 To 5
                Dim dRow As DataRow = DT2.NewRow
                dRow("ProductName") = "Продукт №" & i
                DT2.Rows.Add(dRow)
            Next
 
            Dim listCol As New DataGridViewComboBoxColumn()
            listCol.HeaderText = "Нормальное название продукта"
            listCol.Name = "ComboBoxColumn"
            listCol.DataPropertyName = "ProductID"
            listCol.DataSource = DT2
            listCol.DisplayMember = "ProductName"
            listCol.ValueMember = "ID"
            DataGridView1.Columns.Add(listCol)
            DataGridView1.DataSource = DT1
            DataGridView1.Columns("ComboBoxColumn").DisplayIndex = DataGridView1.ColumnCount - 1
            DataGridView2.DataSource = DT1
 
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.02.2014, 20:17
Помогаю со студенческими работами здесь

Отправка скрытого запроса при загрузке страницы
Сделал небольшое дополнение для опенкарта, которое отображает цену из сторонней БД. Работает, цену показывает. Но есть недостаток, модуль...

Вывод значения в comboBox при загрузке формы
Доброго времени суток! Как сделать, чтобы при открытии формы в comboBox уже отображалось значение в зависимости от условия?

При загрузке формы не выводятся значения из таблицы в dataGridView
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

Присвоение текстового значения полю при загрузке формы
Добрый день! Подскажите пожалуйста следующее: Имеем в форме поля: Деталь, Количество, Выбрать, Закрыть , Статус . Поля...

При загрузке формы не могу получить значения полей
проблема следующая: из одной формы, по нажатию кнопки, запускается другая и поля заполняются значениями полей первой формы Private Sub...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru