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

Навигация по записям Datagridview по средствам кнопок

03.02.2020, 14:35. Показов 4362. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть datagridview. в ней 1 столбец
При загрузке формы выделена первая строка.
Так же на форме есть кнопки вверх/вниз/на первую запись/ на последнюю запись
Как при нажатии на кнопку вниз переместить выделение строки вниз на 1.
при нажатии на кнопку вверх переместить выделение строки вверх на 1.
при нажатии на кнопку на первую запись выделить первую запись
.при нажатии на кнопку на последнюю запись выделить последнюю запись.
При этом в label1 вывести общее количество записей datagridview,
В label 2 вывести текущую (выделенную запись)
В label3 поместить содержимое выделенной строки в данный момент.

Должно получиться так:
Например, выделена 3 запись в datagridview и всего 8 записей.
в label1 и 2 вывести:3 из 8.
В label3 вывести содержимое(value) этой записи

Подскажите, пожалуйста, как это осуществить? заранее большое спасибо за помощь!

Добавлено через 4 минуты
Да, забыл сказать, что данные в datagridview заносятся кодом.
VB.NET
1
2
3
Datagridview1.Rows.Add("1")
Datagridview1.Rows.Add("2")
Datagridview1.Rows.Add("41")
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.02.2020, 14:35
Ответы с готовыми решениями:

Навигация по записям и доступ к данным в ячейке DataTable
Всем привет. По избитому шаблону подключаюсь к таблице БД и, заполнив DataTable данными, отключаюсь. И тут возник вопрос: "А...

Навигация по постам (записям)
Всем привет прошу помочь!!! Есть блок в котором у меня выводятся записи из админки. Именно сам текст (А не заголовок нажал перешел на...

Отображение информации из БД в textbox и навигация по записям
Здравствуйте! Создал вот такую форму: И создал вот такую таблицу с тремя записями: При запуске приложения нужно что бы во...

13
1723 / 1571 / 165
Регистрация: 25.07.2015
Сообщений: 2,660
03.02.2020, 16:06
По навигации -самый простой способ- через BindingSource и BindingNavigator в конструкторе.
Общее кол-во записей и текущую строку BindingNavigator показывает.
содержимое выводится примерно так
VB.NET
1
 label3.text = DataGridView1.CurrentRow.Cells(1).Value.ToString()
где 1 - номер ячейки текущей строки
1
2 / 2 / 0
Регистрация: 18.12.2018
Сообщений: 392
03.02.2020, 16:20  [ТС]
Kulma, видел этот контрл.
Только не разобрался как с ним работать. не подскажите?
0
1723 / 1571 / 165
Регистрация: 25.07.2015
Сообщений: 2,660
03.02.2020, 16:29
Очень просто, если в конструкторе , не углубляясь в код
В конструкторе :
-создаём BindingSource , привязав его к источнику данных (таблице)
-кидаем на форму BindingNavigator , в его свойствах в качестве источника BindingSource
указываем ранее созданный
-в datagridview в качестве источника данных указываем всё тот же ранее созданный BindingSource
1
2 / 2 / 0
Регистрация: 18.12.2018
Сообщений: 392
03.02.2020, 16:38  [ТС]
Kulma, единственное что... как указать мне в выборе источника данных данные с таблицы datagrida? (которые заносятся кодом)
Миниатюры
Навигация по записям Datagridview по средствам кнопок  
0
2 / 2 / 0
Регистрация: 18.12.2018
Сообщений: 392
03.02.2020, 16:47  [ТС]
Kulma, а если делать так: (скрин)
то вылетает ошибка:
System.InvalidOperationException: "Строки нельзя программным способом добавить в коллекцию строк DataGridView, если элемент управления привязан к данным."
Миниатюры
Навигация по записям Datagridview по средствам кнопок  
0
1723 / 1571 / 165
Регистрация: 25.07.2015
Сообщений: 2,660
03.02.2020, 16:50
Данные кодом откуда добавляются в datagrid ?
0
2 / 2 / 0
Регистрация: 18.12.2018
Сообщений: 392
03.02.2020, 16:53  [ТС]
Kulma, при нажатии на кнопку, просто вот так:
VB.NET
1
2
3
4
5
6
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        DataGridView1.Rows.Add("Запись1")
        DataGridView1.Rows.Add("Запись2")
        DataGridView1.Rows.Add("Запись3")
        DataGridView1.Rows.Add("Запись4")
    End Sub
0
1723 / 1571 / 165
Регистрация: 25.07.2015
Сообщений: 2,660
03.02.2020, 17:44
Лучший ответ Сообщение было отмечено _Alf_ как решение

Решение

То же самое кодом через Button1_Click
На строку вниз :
VB.NET
1
2
3
4
5
6
7
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim index As Integer = DataGridView1.CurrentRow.Index
        If index <> -1 Then
            DataGridView1.Rows(index).Selected = True
            DataGridView1.CurrentCell = DataGridView1(0, index + 1)
        End If
End Sub
На строку вверх
VB.NET
1
2
3
4
5
6
7
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim index As Integer = DataGridView1.CurrentRow.Index
        If index <> -1 Then
            DataGridView1.Rows(index).Selected = True
            DataGridView1.CurrentCell = DataGridView1(0, index - 1)
        End If
End Sub
Добавлено через 2 минуты
Цитата Сообщение от _Alf_ Посмотреть сообщение
Kulma, при нажатии на кнопку, просто вот так:
Тогда только кодить переходы .
Выше я вам пример привёл.

Добавлено через 41 минуту
Резюмируем

Переход на строку вниз
VB.NET
1
2
3
4
5
6
7
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim index As Integer = DataGridView1.CurrentRow.Index
        If index <> -1 Then
            DataGridView1.Rows(index).Selected = True
            DataGridView1.CurrentCell = DataGridView1(0, index + 1)
        End If
End Sub
Переход на строку вверх
VB.NET
1
2
3
4
5
6
7
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim index As Integer = DataGridView1.CurrentRow.Index
        If index <> -1 Then
            DataGridView1.Rows(index).Selected = True
            DataGridView1.CurrentCell = DataGridView1(0, index - 1)
        End If
End Sub
Переход к первой строке
VB.NET
1
DataGridView1.CurrentCell = DataGridView1.Rows(0).Cells(0)
Переход к последней строке
VB.NET
1
DataGridView1.CurrentCell = DataGridView1.Rows(DataGridView1.Rows.Count - 2).Cells(0)
Здесь есть нюанс :
если в свойствах DataGridView1 установлена для пользователя возможность добавления данных
VB.NET
1
DataGridView1.AllowUserToAddRows = True
то DataGridView1.Rows.Count - 2
если нет
VB.NET
1
DataGridView1.AllowUserToAddRows = False
то DataGridView1.Rows.Count - 1

Получить номер текущей записи
VB.NET
1
Label1.Text =DataGridView1.CurrentRow.Index
Получить кол-во записей
VB.NET
1
Label2.Text=DataGridView1.Rows.Count - 1
Здесь тоже надо обратить внимание на настройку свойства DataGridView1.AllowUserToAddRows

Получить содержимое ячейки
VB.NET
1
Label3.text = DataGridView1.CurrentRow.Cells(1).Value.ToString()
3
266 / 217 / 54
Регистрация: 01.08.2016
Сообщений: 836
03.02.2020, 18:22
_Alf_, Можно данные добавлять не прямо в дгв а в источник данных к которому она привязывается
0
1548 / 1521 / 325
Регистрация: 03.10.2012
Сообщений: 1,551
03.02.2020, 18:31
Лучший ответ Сообщение было отмечено _Alf_ как решение

Решение

_Alf_, вариант... По сути, то же, что описал Kulma..., но раз уже написал, выложу
Кликните здесь для просмотра всего текста
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
Public Class Form1
    Dim currIndex As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For i = 1 To 9
            DataGridView1.Rows.Add(i.ToString)
        Next
        DataGridView1.MultiSelect = False
        DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
        DataGridView1.Rows(0).Selected = True
        SetState()
    End Sub
 
    Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click
        DataGridView1.Rows(0).Selected = True
        currIndex = 0
        SetState()
    End Sub
 
    Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click
        DataGridView1.Rows(DataGridView1.Rows.Count - 1).Selected = True
        currIndex = DataGridView1.Rows.Count - 1
        SetState()
    End Sub
 
    Private Sub btnPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrev.Click
        currIndex -= 1
        DataGridView1.Rows(currIndex).Selected = True
        SetState()
    End Sub
 
    Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
        currIndex += 1
        DataGridView1.Rows(currIndex).Selected = True
        SetState()
    End Sub
 
    Private Sub SetState()
        btnPrev.Enabled = currIndex > 0
        btnNext.Enabled = currIndex < DataGridView1.Rows.Count - 1
 
        Label1.Text = DataGridView1.Rows(currIndex).Cells(0).Value
        Label2.Text = "Выбрана " & currIndex + 1 & " строка из " & DataGridView1.RowCount
    End Sub
End Class
2
2 / 2 / 0
Регистрация: 18.12.2018
Сообщений: 392
04.02.2020, 13:29  [ТС]
MrCrown, а как сделать так, что если выбрать запись в datagridview руками?
как от нее пойти по записям вверх/вниз и тд
0
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,732
Записей в блоге: 1
04.02.2020, 14:54
VB.NET
1
2
3
4
5
Private Sub Cells_Click(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
    currIndex = e.RowIndex
    DataGridView1.Rows(currIndex).Selected = True
    SetState()
End Sub
1
1548 / 1521 / 325
Регистрация: 03.10.2012
Сообщений: 1,551
04.02.2020, 15:05
Цитата Сообщение от _Alf_ Посмотреть сообщение
как от нее пойти по записям вверх/вниз и тд
Добавить
VB.NET
1
2
3
4
Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
        currIndex = e.RowIndex
        SetState()
    End Sub
Добавлено через 5 минут
Не заметил, что уже ответили
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.02.2020, 15:05
Помогаю со студенческими работами здесь

Навигация по выделенным записям в подчиненной форме Access
Как программно пробежаться по выделенным записям в подчиненной форме Access.

навигация без кнопок
Здравствуйте, сразу скажу что я совсем новичок в этом деле, просто очень нужно создать сайт. Проблема заключается в том что по задумке...

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

Привязка кнопок перехода по записям к данным раскрывающего списка с учетом прочих параметров фильтра
Доброго времени суток, уважаемые форумчане. Прошу помощи, наставления в следующем вопросе: --Есть БД с импортом данных в её таблицу....

Как организовать перемещение по записям в DataGridView?
Иногда бывает нужно без клавиатуры по клику мыши переместиться на самую последнюю запись DataGridView, например, для добавления новой...


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

Или воспользуйтесь поиском по форуму:
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