powered by simpleCommunicator - 2.0.27     © 2024 Programmizd 02
Map
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск дубликатов в DataGridView
20 сообщений из 20, страница 1 из 1
Поиск дубликатов в DataGridView
    #38737639
visak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть код, который находит и выделяет зелёным цветом значение, которое находится в первом столбце, далее он пробегает по столбцу и ищет только первое значение. Как изменить код, чтобы он находил все повторяющиеся значения, и окрашивал повторения в разный цвет, к примеру первая пара совпадений - зёленый, вторая пара совпадений - синий, и т.д.

Прилагаю код....
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 For i = 0 To DataGridView1.Rows.Count - 1

            For J = 0 To DataGridView1.RowCount - 1

                If DataGridView1.Rows(i).Cells(0).Value = DataGridView1.Rows(i - i).Cells(0).Value Then

                    DataGridView1.Rows(i).Cells(J).Style.BackColor = Color.Green

                    ' DataGridView1.Rows.RemoveAt(J)
                    ' J -= 1
                End If
            Next
        Next
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38737669
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
visak,

поиск осуществлять не по ячейкам, а по данным, прицепленным к таблице. Работать через BindingSource, в него запихнуть коллекцию (например List<ZayavkaInfo>), поиск дубликатов делать через Linq перед отрисовкой (или где-то раньше). При нахождении присваивать элементу коллекции цветовой признак.
В событии отрисовки смотреть на значение цветового признака у элемента ZayavkaInfo, соответствующего строке, окрашивать соответственно.
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38737675
visak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

Дело в том, что данные будут всегда динамические.
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38737682
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
visakPallaris,

Дело в том, что данные будут всегда динамические.

BindingSource прекрасно для этого подходит
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38737737
visak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

Знал бы я, как работать с BindingSource, т.к. я в этом деле новичок.....(
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38737751
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
visakPallaris,

Знал бы я, как работать с BindingSource, т.к. я в этом деле новичок.....(

Для начала
Код: c#
1.
2.
3.
4.
5.
6.
BindingSource bs_ = new BindingSource();
List<Zayavka> list_ = new List<Zayavka>();
list_.Add(new Zayavka(...));
list_.Add(new Zayavka(...));
bs_.DataSource = list_;
dataGridView.DataSource = bs_;



Дальше смотри msdn и гугл.
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38737943
visak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris, вот код, который находит в столбце 0 одинаковые значения, вот что сюда добавить, чтобы совпадения были разнгого цвета?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
  Dim ii&

        Dim i As Integer
        Dim rowid As String
        Dim RowI As Object
        Dim rowii As Object
        For i = 0 To DataGridView1.Rows.Count - 1
            RowI = DataGridView1.Rows(i)

            rowid = DataGridView1.Rows(i).Cells("№ заявки").Value.ToString()
            ' MsgBox(rowid)
            For ii = i + 1 To DataGridView1.Rows.Count - 1
                rowii = DataGridView1.Rows(ii)
                If rowid = rowii.cells("№ заявки").value.ToString() Then

                    RowI.DefaultCellStyle.BackColor = Color.Pink
                    rowii.DefaultCellStyle.backcolor = Color.Pink

                End If



            Next
        Next
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38737950
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
visak,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public Color GetNextColor(Random rand)
{
     return Color.FromArgb(rand.Next(255),rand.Next(255),rand.Next(255));
}
public void MyMethod()
{
Random rand_ = new Random();
Color color_ = Color.Pink;
.....
                    RowI.DefaultCellStyle.BackColor = color_;
                    rowii.DefaultCellStyle.backcolor = color_;
                    color_ = GetNextColor(rand_);
}
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38737951
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правда это будет только попарная раскраска, для совпадений 2+ додумай сам
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38738038
Spartak19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
visak,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 Dim i As Integer
        Dim rowid As String
        Dim RowI As Object
        Dim rowii As Object
        For i = 0 To DataGridView1.Rows.Count - 1
            RowI = DataGridView1.Rows(i)

            rowid = DataGridView1.Rows(i).Cells("№ заявки").Value.ToString()
            ' MsgBox(rowid)
            For ii = i + 1 To DataGridView1.Rows.Count - 1
                rowii = DataGridView1.Rows(ii)
                If rowid = rowii.cells("№ заявки").value.ToString() Then

                    RowI.DefaultCellStyle.BackColor = Color.Pink
                    rowii.DefaultCellStyle.backcolor = Color.Pink

                End If



            Next
        Next



Если ячейки не имеют значения, то есть пустые, вылазит ошибка
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38738305
visak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris, Спасибо тебе большое, это то что надо. А ты хорошо шаришь, в DataGridView?
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38738316
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
visakА ты хорошо шаришь, в DataGridView?

Фактически, я эксперт с мировым именем по DataGridView!!!
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38738447
Spartak19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Spartak19visak,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 Dim i As Integer
        Dim rowid As String
        Dim RowI As Object
        Dim rowii As Object
        For i = 0 To DataGridView1.Rows.Count - 1
            RowI = DataGridView1.Rows(i)

            rowid = DataGridView1.Rows(i).Cells("№ заявки").Value.ToString()
            ' MsgBox(rowid)
            For ii = i + 1 To DataGridView1.Rows.Count - 1
                rowii = DataGridView1.Rows(ii)
                If rowid = rowii.cells("№ заявки").value.ToString() Then

                    RowI.DefaultCellStyle.BackColor = Color.Pink
                    rowii.DefaultCellStyle.backcolor = Color.Pink

                End If



            Next
        Next



Если ячейки не имеют значения, то есть пустые, вылазит ошибка

Проблема решается установкой свойства Datagriview AllowUserToaadRow = False
Запрет на добавления строки пользователем
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38738822
Spartak19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

Ниже приведенный код почему то закрашивает 3 совпадения, а два нет, что не так?


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 For i = 0 To DataGridView1.Rows.Count - 1
            RowI = DataGridView1.Rows(i)
            rowid = DataGridView1.Rows(i).Cells("№ заявки").Value.ToString()
            For ii = i + 1 To DataGridView1.Rows.Count - 1
                rowii = DataGridView1.Rows(ii)
                For iii = ii + 1 To DataGridView1.Rows.Count - 1
                    row3 = DataGridView1.Rows(iii)
                    If rowid = rowii.cells("№ заявки").value.ToString() And rowid = row3.cells("№ заявки").value.ToString() Then
                        RowI.DefaultCellStyle.BackColor = color_
                        rowii.DefaultCellStyle.backcolor = color_
                        row3.DefaultCellStyle.backcolor = color_
                        color_ = GetNextColor(rand_)
                    End If
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38739016
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Spartak19,

убери лишний цикл и добавь признак, что строка уже окрашена
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38739036
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Spartak19,

Дежавю, нет? 16528076 , 16529294
Вы уж там с visak-ом определитесь, что вам нужно-то?
А то темы одинаковые, вопросы одинаковые, нежелание анализировать то что предлагают - одинаковое.
Прямо близнецы братья...
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38740394
Spartak19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

Код: vbnet
1.
2.
For iii = ii + 1 To DataGridView1.Rows.Count - 1
                    row3 = DataGridView1.Rows(iii)



Этот цикл убрал, как прописывается признак что строка уже окрашена?
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #38740608
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Spartak19Pallaris,

Код: vbnet
1.
2.
For iii = ii + 1 To DataGridView1.Rows.Count - 1
                    row3 = DataGridView1.Rows(iii)



Этот цикл убрал, как прописывается признак что строка уже окрашена? 16491741
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Поиск дубликатов в DataGridView
    #40129204
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как сделать так , чтобы пройтись по datagridview удалить в ячеках из определенного столбца все дубликаты?
...
Рейтинг: 0 / 0
Поиск дубликатов в DataGridView
    #40129228
Алымов Анатолий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совет тот же что и первый ответ в теме - убирать дубликаты в источнике данных.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск дубликатов в DataGridView
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]