Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
GRURUS
9 / 9 / 4
Регистрация: 27.06.2011
Сообщений: 295
1

Как синхронизировать две DataGridView?

13.07.2011, 14:52. Просмотров 1115. Ответов 20
Метки нет (Все метки)

Подскажите как сделать при вводе данных в одну таблицу, эти же данные отображались во второй таблице.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2011, 14:52
Ответы с готовыми решениями:

Как связать две DataGridView, отображающие данные из связанных таблиц
Здравствуйте! Помогите новичку. Имеются 2 связанные таблицы. Как связать 2...

Объединить две таблицы DataGridView в одну
есть две разные таблицы DataGridView с разными данными, но с одинаковым кол-во...

Как синхронизировать прогрессбар с кнопкой на панели задач
Собственно есть прогрессбар копирования. Как на Windows 7 сделать прогресс...

В DataGridView выводится две таблицы БД вместо одной
К одной форме подключаю две таблицы. один столбец из одной таблицы вывожу в...

Как синхронизировать время на компьютере с сервером времени в интернет
В Windows есть возможность синхронизации времени с серверами времени в сети...

20
Памирыч
Почетный модератор
20878 / 8762 / 1080
Регистрация: 11.04.2010
Сообщений: 11,013
13.07.2011, 15:10 2
Как вариант - привязаться к одному источнику
На форме 2 Грида:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
Public Class Form1
    Dim dt As New DataTable
    Dim ds As New DataSet
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        DataGridView1.DataSource = dt
        dt.Columns.Add("1")
        dt.Columns.Add("2")
        ds.Tables.Add(dt)
        DataGridView2.DataSource = DataGridView1.DataSource
    End Sub
End Class
0
Egor2014
29 / 8 / 2
Регистрация: 22.10.2013
Сообщений: 375
08.09.2016, 15:00 3
Можно ли синхронизировать 2 грида если данные вносились в DataGridView1 без привязки к DataTable ?

У меня данные вносились, как имена файлов с компа.
vb.net
1
2
3
4
For I = 0 To Files.Count - 1
                DataGridView5.Rows.Add()
                DataGridView5.Item(0, I).Value = IO.Path.GetFileName(Files(I))      '   Имя файла в DataGridView
            Next
0
Kulma
437 / 376 / 62
Регистрация: 25.07.2015
Сообщений: 685
08.09.2016, 15:17 4
Egor2014, что вы подразумеваете под "синхронизировать 2 грида" ?
Данные должны вноситься в 2 grid одновременно или что-то другое ?
0
Egor2014
29 / 8 / 2
Регистрация: 22.10.2013
Сообщений: 375
08.09.2016, 15:34 5
Kulma, данные вносить можно прописав схожие строки. Мне важно, при нажатии в любом гриде на столбец (треугольник сверху), чтоб сортировались строки синхронно.

Добавлено через 13 минут
Для данных тоже нужен код, чтоб пересылались типа такого:
vb.net
1
DataGridView2.DataSource = DataGridView1.DataSource
или
vb.net
1
2
        dataGridView1.DataSource = bindingSource1
        dataGridView2.DataSource = bindingSource1
0
Kulma
437 / 376 / 62
Регистрация: 25.07.2015
Сообщений: 685
08.09.2016, 16:00 6
В событии
vb.net
1
2
 Sub DataGridView1_ColumnHeaderMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs)
End Sub
прописываете сортировку по двум grid.
Другого способа я не вижу .
народ подтянется , может ещё идеи подкинут ))

Добавлено через 6 минут
Цитата Сообщение от Egor2014 Посмотреть сообщение
Для данных тоже нужен код, чтоб пересылались типа такого
Так вы же в первом посту написали , что данные не привязаны ни к чему ....
Да и по коду у вас данные просто в ячейки grid заносятся
О каком/их datasource речь идёт ?
0
Egor2014
29 / 8 / 2
Регистрация: 22.10.2013
Сообщений: 375
08.09.2016, 16:04 7
Да "в ячейки grid заносятся" я так понимаю это не верно, нужно по другому записывать через DataTable,
тогда и синхронизация легко реализуется.
0
Yury Komar
Модератор
Эксперт .NET
2377 / 2183 / 348
Регистрация: 27.01.2014
Сообщений: 3,913
Завершенные тесты: 1
08.09.2016, 17:36 8
тоесть у вас две абсолютно одинаковые таблицы на форме должны быть?
0
Egor2014
29 / 8 / 2
Регистрация: 22.10.2013
Сообщений: 375
08.09.2016, 17:48 9
Одинаковые только по 1 столбцу

Добавлено через 10 минут
Написал, но как надо не работает:
vb.net
1
2
3
4
5
6
7
   Private Sub DataGridView1_ColumnHeaderMouseClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseClick
        If DataGridView1.Item(0, 0).Value <> DataGridView2.Item(0, 0).Value Then
            DataGridView2.Sort(DataGridView2.Columns(e.ColumnIndex), System.ComponentModel.ListSortDirection.Descending)
        Else
            DataGridView2.Sort(DataGridView2.Columns(e.ColumnIndex), System.ComponentModel.ListSortDirection.Ascending)
        End If
    End Sub
0
Yury Komar
Модератор
Эксперт .NET
2377 / 2183 / 348
Регистрация: 27.01.2014
Сообщений: 3,913
Завершенные тесты: 1
08.09.2016, 17:50 10
так что то уже получилось?
и как вы хотите отсортировать снхронно две таблицы если колонки у них разные, кроме одной?
0
Egor2014
29 / 8 / 2
Регистрация: 22.10.2013
Сообщений: 375
08.09.2016, 17:55 11
нет не получилось
синхронизировать так чтоб, содержимое ячеек в первом столбце всегда были одинаково у гридов
0
Yury Komar
Модератор
Эксперт .NET
2377 / 2183 / 348
Регистрация: 27.01.2014
Сообщений: 3,913
Завершенные тесты: 1
08.09.2016, 18:31 12
Egor2014, наверное событие сортировки срабатывает раньше, чем клип мышкой. Используйте событие Sorted... И там уже определяйте разницу первый строк в таблицах, вот так работает как вам нужно:
vb.net
1
2
3
4
5
6
7
Private Sub DataGridView1_Sorted(sender As Object, e As System.EventArgs) Handles DataGridView1.Sorted
        If sender(0, 0).value > DataGridView2(0, 0).Value Then
            DataGridView2.Sort(DataGridView2.Columns(0), System.ComponentModel.ListSortDirection.Descending)
        ElseIf sender(0, 0).value < DataGridView2(0, 0).Value Then
            DataGridView2.Sort(DataGridView2.Columns(0), System.ComponentModel.ListSortDirection.Ascending)
        End If
    End Sub
1
Миниатюры
Как синхронизировать две DataGridView?  
Kulma
437 / 376 / 62
Регистрация: 25.07.2015
Сообщений: 685
08.09.2016, 18:36 13
Цитата Сообщение от Egor2014 Посмотреть сообщение
Написал, но как надо не работает:
Хм.
Я всё никак не могу понять задачу до конца .)))

Вам нужно , чтобы два grid сортировались по первому столбцу идентично ?
Ну так пропишите для двух сортировку.
Вы в коде сортируете только один grid , второй сортируется "на своей волне", откуда же
синхронизации то взяться.
Вот так всё работает
vb.net
1
2
3
4
5
6
7
8
9
System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseClick
        If DataGridView1.Item(0, 0).Value <> DataGridView2.Item(0, 0).Value Then
            DataGridView2.Sort(DataGridView2.Columns(e.ColumnIndex), System.ComponentModel.ListSortDirection.Descending)
            DataGridView1.Sort(DataGridView1.Columns(e.ColumnIndex), System.ComponentModel.ListSortDirection.Descending)
        Else
            DataGridView2.Sort(DataGridView2.Columns(e.ColumnIndex), System.ComponentModel.ListSortDirection.Ascending)
            DataGridView1.Sort(DataGridView1.Columns(e.ColumnIndex), System.ComponentModel.ListSortDirection.Ascending)
        End If
    End Sub
1
Egor2014
29 / 8 / 2
Регистрация: 22.10.2013
Сообщений: 375
08.09.2016, 18:52 14
Yury Komar, если по 1 столбцу кликаешь, то все ОК. При клике по 2 уже сбивается.
Kulma, в любом гриде строки должны не нарушатся, в примере они разваливаются. 1 столбец только как ориентир.
0
Yury Komar
Модератор
Эксперт .NET
2377 / 2183 / 348
Регистрация: 27.01.2014
Сообщений: 3,913
Завершенные тесты: 1
08.09.2016, 19:21 15
Цитата Сообщение от Egor2014 Посмотреть сообщение
При клике по 2 уже сбивается.
блин ну это ж просто починить... выставьте свойство остальных колонок SortMode = NotSortable и клик по колонке ни к чему не приведет... А первую оставьте для сортировки.
1
Kulma
437 / 376 / 62
Регистрация: 25.07.2015
Сообщений: 685
08.09.2016, 19:22 16
Egor2014, предлагаю задачу сформулировать заново

Ранее вам Yury Komar писал :
Цитата Сообщение от Yury Komar Посмотреть сообщение
и как вы хотите отсортировать снхронно две таблицы если колонки у них разные, кроме одной?
На что вы ответили :
Цитата Сообщение от Egor2014 Посмотреть сообщение
синхронизировать так чтоб, содержимое ячеек в первом столбце всегда были одинаково у гридов
В приведённых вам кодах синхронизация работает по 1-й колонке (у Yury Komar во все стороны, в моём
по у вашему условию)
Теперь выясняется , что
Цитата Сообщение от Egor2014 Посмотреть сообщение
1 столбец только как ориентир.
Объясните пожалуйста , что вы подразумеваете под синхронизацией grid ?
0
Egor2014
29 / 8 / 2
Регистрация: 22.10.2013
Сообщений: 375
08.09.2016, 19:35 17
Yury Komar, я все таки надеялся, что сортировка возможна для 2 столбца, ладно +1.
Kulma, в моей задаче видимо не есть та стандартная синхронизация... прошу прощения, что не смог верно объяснить.
0
Yury Komar
Модератор
Эксперт .NET
2377 / 2183 / 348
Регистрация: 27.01.2014
Сообщений: 3,913
Завершенные тесты: 1
08.09.2016, 19:39 18
Цитата Сообщение от Egor2014 Посмотреть сообщение
сортировка возможна для 2 столбца
так в чем проблема... оставьте вторую колонку сортировочной, остальные заблокируйте через SortMode = NotSortable
0
Egor2014
29 / 8 / 2
Регистрация: 22.10.2013
Сообщений: 375
08.09.2016, 20:09 19
Вторую колонку сделал сортировочной, но 1 столбцу видно сбилось, картинку прикладываю.
0
Миниатюры
Как синхронизировать две DataGridView?  
Yury Komar
Модератор
Эксперт .NET
2377 / 2183 / 348
Регистрация: 27.01.2014
Сообщений: 3,913
Завершенные тесты: 1
09.09.2016, 10:08 20
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от Egor2014 Посмотреть сообщение
я все таки надеялся, что сортировка возможна для 2 столбца
Цитата Сообщение от Egor2014 Посмотреть сообщение
Вторую колонку сделал сортировочной, но 1 столбцу видно сбилось, картинку прикладываю.

Egor2014, тогда сделайте так:

1) все колонки SortMode = Programmatic
2) добавьте флаг-переменную, храняющую текущий тип сортировки
3) используйте следующий код на клик по заголовкам, и при клике по любой колонке будет правильная для вас сортировка выполняться:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
    Dim IsDESC As Boolean
    Private Sub DataGridView1_ColumnHeaderMouseClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseClick
        If IsDESC Then
            DataGridView1.Sort(DataGridView1.Columns(0), System.ComponentModel.ListSortDirection.Ascending)
            DataGridView2.Sort(DataGridView2.Columns(0), System.ComponentModel.ListSortDirection.Ascending)
            IsDESC = False
        Else
            DataGridView1.Sort(DataGridView1.Columns(0), System.ComponentModel.ListSortDirection.Descending)
            DataGridView2.Sort(DataGridView2.Columns(0), System.ComponentModel.ListSortDirection.Descending)
            IsDESC = True
        End If
    End Sub
2
Миниатюры
Как синхронизировать две DataGridView?  
09.09.2016, 10:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2016, 10:08

Как синхронизировать время на двух компьютерах локальной сети?
Есть &quot;главный&quot; компьютер на котором время контролируется и подстраивается...

Синхронизировать текст в двух TextBox при наборе
Всем привет! У меня в программе есть два textbox-а. Если отметить галку...

Органайзер. Как можно каждую ячейку DataGridView сделать как класс для удобного обращения
Здравствуйте. Скажите пожалуйста ,а как можно каждую ячейку DataGridView...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru