BASSIES Ответов: 2

Показать несколько строк datagridview в текстовое поле


Привет,

Я использую это, чтобы показать некоторые данные из datagridview с флажками в текстовое поле.

TextBox1.Text = DataGridView1.Item(3, DataGridView1.CurrentRow.Index).Value


Оке , но как мне выбрать более одной строки и показать элементы, разделенные буквой А между элементами ?

Например при выборе 3 флажков

Ben - Eric - John


Что я уже пробовал:

<pre lang="vb">  TextBox1.Text = DataGridView1.Item(3, DataGridView1.CurrentRow.Index).Value


Это показывает только один элемент , когда я выбираю 2 флажка, он показывает только последний

2 Ответов

Рейтинг:
4

BASSIES

Dim message As String = String.Empty
      For Each row As DataGridViewRow In DataGridView1.Rows
          Dim isSelected As Boolean = Convert.ToBoolean(row.Cells("chk").Value)
          If isSelected Then

              message &= row.Cells("Name").Value.ToString()
              message &= " / "
          End If
      Next


      TextBox1.Text = (message)


Рейтинг:
20

Bryian Tan

не совсем понятно, какова структура вашего текущего кода, но давайте предположим, что в каждой строке есть флажок с именем "Chk", имя находится в столбце "name". Вы можете написать цикл для циклического перебора строк, если установлен флажок, захватите имя, вот пример.

Вы также можете попробовать dataGridView1.SelectedRows при установке флажка будет выделена строка.

List<string> names = new List<string>();
            foreach (DataGridViewRow r in dataGridView1.Rows)
            {
                bool isSelected = Convert.ToBoolean(r.Cells["Chk"].Value);

                if (isSelected)
                {
                    names.Add(r.Cells["name"].Value.ToString());
                }
            }

            MessageBox.Show(string.Join(" - ", names));


BASSIES

Спасибо за Ваш ответ , Брайан, но я не могу преобразовать код в vb.net-да.

Есть ошибка


Преобразование кода ошибки
Сообщение об ошибке:
Ошибка преобразования: преобразование для неполного элемента не реализовано, пожалуйста, сообщите об этой проблеме в '(DataGridViewRow r ' на символе 88

BASSIES

Нашел еще один конвертер

Dim names As List(Of String) = новый список(Of String)
Для каждого R в качестве ячейки datagridviewrow в DataGridView1.Строк
Dim выбирается как Boolean = Convert.Тобулеан(р. клетки("ЧК").Ценность)
Если изменили реализацию, то
имена.Добавить(r.ячейки("продукт").Ценность.Метод toString)
Конец, Если

Следующий
Ящик для сообщений.Показать(Строка.Join ( " - " , имена))

Получить ошибку по именам
Список(строки)' не может быть преобразован в 'строку()

Bryian Tan

Код вроде бы в порядке. Вы проверили, что там в "именах"?

BASSIES

Я не могу запустить отладку из-за ошибки в именах

ошибка заключается в следующем

Список(строки)' не может быть преобразован в 'строку()

BASSIES

Брайан ,

Искал по вашей подсказке, чтобы найти dataGridView1.SelectedRows

Нашел это , оно работает, но текст не разделен на -
Пытался пристроиться но безуспешно

Результат - Бенерик Джон нет- между именами


Тусклое сообщение в виде строки = String.Пустой
Для каждой строки как DataGridViewRow в DataGridView1.Rows
Dim выбирается как Boolean = Convert.ToBoolean(row.Cells("chk").Ценность)
Если изменили реализацию, то
сообщение &= Environment.NewLine
сообщение &= строка.Ячейки("имя").Ценность.Метод toString()
Конец, Если
Следующий

TextBox1.Text = ("выбранные значения" & сообщение)

что я могу изменить здесь с помощью textBox1.text= (..........

Bryian Tan

Ну, не совсем понятно, почему список строк не будет работать. Во всяком случае, с помощью этого маршрута вы можете добавить“ -“, сделав что-то вроде &=“ -“. Проблема с этим подходом заключается в том, что выход будет в конечном итоге иметь избыточное “-“ в конце. Возможно, вам придется написать еще одну строку кода, чтобы удалить последний трейлинг “-“

BASSIES

Спасибо Брайан ,

Я могу снять его, если захочу.