141 / 124 / 50
Регистрация: 10.11.2011
Сообщений: 622
1

Отображение данных столбца DataGridView в ComboBox

27.04.2015, 14:02. Показов 5665. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Создал базу данных на основе элемента управления DataGrid.Данные заносятся в таблицу. Теперь нужно, что бы столбцы с данными DataGrid отображались соответственно в комбобокс(Клиент)и текстбокс(адрес).
Вложения
Тип файла: rar Пример.rar (71.6 Кб, 43 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2015, 14:02
Ответы с готовыми решениями:

Вывод из DataGridView данных столбца в ComboBox
вывожу из DataGrid 14 столбец в Combobox For i = 0 To Me.DataGridView1.RowCount - 2 ...

Выбор данных через ComboBox и отображение данных в datagridview
Всем здравствуйте. Есть проблема. Нужно осуществить выбор данных по договорам и клиентам через...

Добавление данных из столбца DataGridView в ComboBox
Добрый вечер! Нужно добавить названия организаций (Name) из столбца DataGridView в ComboBox. ...

Отображение столбца таблицы в Combobox
В общем есть БД на Mysql Там 2 таблицы films(f_id,name,g_id) и genre(g_id,g_name) На форме ADO...

23
40 / 40 / 9
Регистрация: 19.03.2014
Сообщений: 215
27.04.2015, 20:10 2
Что-то вроде этого

VB.NET
1
2
TextBox1.Text = Me.DataGridView1.Rows(0).Cells(0).Value
ComboBox1.Text = Me.DataGridView1.Rows(0).Cells(1).Value
0
141 / 124 / 50
Регистрация: 10.11.2011
Сообщений: 622
28.04.2015, 12:53  [ТС] 3
Добавил код в проект, но отображаются только первые строки DataGrid, а как прописать код , чтобы можно было делать выбор из комбобокса
Вложения
Тип файла: rar Пример.rar (72.1 Кб, 29 просмотров)
0
39 / 40 / 20
Регистрация: 30.09.2013
Сообщений: 141
28.04.2015, 12:57 4
В цикле пройдитесь по ячейками таблицы и:

VB.NET
1
2
3
    For i = 0 to Me.DataGridView1.Rowcount - 1
          ComboBox1.Items.Add(Me.DataGridView1.Rows(i).Cells(0).Value)
    Next i
1
141 / 124 / 50
Регистрация: 10.11.2011
Сообщений: 622
28.04.2015, 13:12  [ТС] 5
FlegmaSpirit, спасибо за подсказку , но выдает ошибку : Значение не может быть неопределенным.
Имя параметра: item
0
39 / 40 / 20
Регистрация: 30.09.2013
Сообщений: 141
28.04.2015, 13:19 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

проверяйте наличие значения в ячейке.

VB.NET
1
IsNothing
вам в помощь =)

Видимо у вас в таблице разрешено добавление строк пользователям и, как следствие, последняя ячейка столбца пуста и содержит Nothing, который ComboBox к себе не может добавить как элемент списка. В этом случае вам нужно использовать немного другой код:

VB.NET
1
2
3
     For i = 0 to Me.DataGridView1.Rowcount - 2
          ComboBox1.Items.Add(Me.DataGridView1.Rows(i).Cells(0).Value)
    Next i
1
141 / 124 / 50
Регистрация: 10.11.2011
Сообщений: 622
28.04.2015, 13:21  [ТС] 7
Не потяну-знаний маловато.
0
39 / 40 / 20
Регистрация: 30.09.2013
Сообщений: 141
28.04.2015, 13:28 8
Маловато для чего? Чтобы скопировать и вставить код, который я вам написал в последнем сообщении?

Ну а если на счет проверки, то:

VB.NET
1
if Not IsNothing(Me.DataGridView1.Rows(i).Cells(0).Value) then ComboBox1.Items.Add(Me.DataGridView1.Rows(i).Cells(0).Value)
2
141 / 124 / 50
Регистрация: 10.11.2011
Сообщений: 622
28.04.2015, 13:53  [ТС] 9
FlegmaSpirit спасибо за помощь- это я торможу не досмотрел.
Добавил Ваш код -заработало , но теперь нужно связать с текстбоксом. Сейчас выбираю любое значение в комбобоксе ,а в текстбоксе показывает только первое значение столбца -2 (Клиенты) .Значения текстбокса не меняются!
Вложения
Тип файла: rar Пример3.rar (72.5 Кб, 32 просмотров)
0
39 / 40 / 20
Регистрация: 30.09.2013
Сообщений: 141
28.04.2015, 15:28 10
Не совсем понимаю суть задачи. Вы хотите, чтобы после выбора в комбобоксе какого-то значения, в текстбокс попадало соответствующее значение из соседнего поля таблицы? Правильно я понял?
0
141 / 124 / 50
Регистрация: 10.11.2011
Сообщений: 622
28.04.2015, 15:51  [ТС] 11
Да. Вы правы.
0
39 / 40 / 20
Регистрация: 30.09.2013
Сообщений: 141
28.04.2015, 19:43 12
Цитата Сообщение от yutrans Посмотреть сообщение
Да. Вы правы.
В таком случае на событие изменения значения combobox Вам нужно написать примерно такой код:

VB.NET
1
2
3
4
5
6
      For i = 0 to Me.DataGridView1.Rowcount - 2
          If ComboBox1.Text = Me.DataGridView1.Rows(i).Cells(0).Value then 
               TextBox1.Text = Me.DataGridView1.Rows(i).Cells(1).Value
               Exit For
          End If
      Next i
Только укажите правильные индексы столбцов
1
4407 / 3531 / 843
Регистрация: 02.02.2013
Сообщений: 3,417
Записей в блоге: 2
29.04.2015, 14:11 13
для yutrans
Если вопрос еще актуален, то предлагаю следующий код (размещаю здесь т.к. в личных сообщениях не нашел возможности привязать вложение). Т.к. происхождение таблицы не известно я ее просто смоделировал.
Вложения
Тип файла: zip gridText.zip (70.8 Кб, 46 просмотров)
2
141 / 124 / 50
Регистрация: 10.11.2011
Сообщений: 622
29.04.2015, 15:02  [ТС] 14
Вопрос актуален. А если нужно добавить новые данные , то только через код?
Я хочу ввод новых данных производить в DataGrid и в комбобоксе выбирать . Это реально? Посмотрите мой пример3
0
39 / 40 / 20
Регистрация: 30.09.2013
Сообщений: 141
29.04.2015, 15:37 15
Цитата Сообщение от yutrans Посмотреть сообщение
А если нужно добавить новые данные , то только через код?
Добавить данные куда?
Цитата Сообщение от yutrans Посмотреть сообщение
Я хочу ввод новых данных производить в DataGrid и в комбобоксе выбирать . Это реально? Посмотрите мой пример3
Посмотрел. Проект достаточно бестолковый. Поэтому сложно понять, что именно вы хотите реализовать. А так же у вас нет куска кода, который будет отвечать за изменение данных в Form1.TextBox1

Вот код для этого:

VB.NET
1
2
3
4
5
6
7
8
    Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        For i = 0 To Form2.DataGridView1.RowCount - 2
            If ComboBox1.Text = Form2.DataGridView1.Rows(i).Cells(0).Value Then
                TextBox1.Text = Form2.DataGridView1.Rows(i).Cells(1).Value
                Exit For
            End If
        Next i
    End Sub
Но пока вы не загрузите Form2, ваша программа не увидит данные в таблице и, как следствие, код работать не будет. Посему имеет смысл грузить на старте Form1 сразу и Form2 и прятать её, либо читать данные из вашего файла с данными в массивы и производить поиск по ним вместо DataGridView1.
1
0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 17
29.05.2015, 16:48 16
подскажите пожалуйста, как к вот такому варианту сбора:

VB.NET
1
2
3
For i = 0 to Me.DataGridView1.Rowcount - 1
          ComboBox1.Items.Add(Me.DataGridView1.Rows(i).Cells(0).Value)
    Next i
реализовать исключение повторов?
Заранее спасибо!
0
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
29.05.2015, 17:50 17
VinglVas,
VB.NET
1
2
3
4
5
        Dim CR As String
        For i = 0 To Me.DataGridView1.RowCount - 2
            CR = DataGridView1(0, i).Value
            If Not ComboBox1.Items.Contains(CR) Then ComboBox1.Items.Add(CR)
        Next i
2
4407 / 3531 / 843
Регистрация: 02.02.2013
Сообщений: 3,417
Записей в блоге: 2
29.05.2015, 20:32 18
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Можно и так
VB.NET
1
2
3
Dim col As Integer = 0
Dim ss = ((From cc As DataGridViewRow In DataGridView1.Rows Where cc.Cells(col).Value IsNot Nothing Select cc.Cells(col).Value).Distinct).ToArray
ComboBox1.Items.AddRange(ss)
1
Модератор
Эксперт .NET
4201 / 3286 / 496
Регистрация: 27.01.2014
Сообщений: 6,027
30.05.2015, 06:47 19
Памирыч, в вашем примере если например в списке будет уже вариант типа ИВАНОВА, а проверяемое значение ИВАНОВ, эттэто разные люди, ио ИВАНОВ добавлен не будет.
тут нужно конкретные строки проверять.
2
Модератор
Эксперт .NET
4201 / 3286 / 496
Регистрация: 27.01.2014
Сообщений: 6,027
30.05.2015, 19:08 20
Памирыч, сталкивался с таким, из личного опыта, в случае с фамилиями вариант с .Contains не пройдёт, но его и изменить не долго, например так:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
        For i = 0 To Me.DataGridView1.Rows.Count - 2
            Dim CR As String = DataGridView1.Item(0, i).Value
            Dim НАШЛА As Boolean = False
             For i2 = 0 To Me.ComboBox1.Items.Count - 1
               If Me.ComboBox1.Items(i2) = CR Then
                   НАШЛА = True
                   Exit For
               End If
             Next i2
        If Not НАШЛА Then Me.ComboBox1.Items.Add(CR)
        Next i

считаю самым идеальным вариантом исключения дублиуатов при поиске данных...
1
30.05.2015, 19:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2015, 19:08
Помогаю со студенческими работами здесь

Отображение полей таблицы DataGridView в ComboBox
Нужно чтобы в ComboBox отображались поля таблицы DataGridView. Как сделать? вот код. но только с...

Значения первого столбца DataGridView разместить в ComboBox
Есть база данных Access. Я её подключил к проекту. Дальше заполнил DataGridView данными оттуда....

Создание столбца ComboBox в DataGridView вызывает ошибку
Тема: ComboBox in DataGridView Среда Visual Basic STUDIO’2010 Professional Как обработать...

Отображение столбца в DataGridView при выборе даты в MonthCalendar
Добрый день, еще раз! Есть форма, на форме ListBox и Panel, на которой расположены DataGridView и...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru