Группировка в DataGridView - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Привет всем! Мне нужно ваша помощь, я хочу группировать данные на DataGridView но не получится. Если у вас есть какой нибуд код покажите пожалуйста. За ранние благодарю.

Решение задачи: «Группировка в DataGridView»

textual
Листинг программы
Public Class Form2
    Private pps() As people
    Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        ReDim pps(10)
        pps(0) = New people("Иванов И.И.", "Тверь", 2500, New Date(2015, 5, 15))
        pps(1) = New people("Иванов И.И.", "Саратов", 7320, New Date(2015, 10, 3))
        pps(2) = New people("Иванов И.И.", "Сочи", 10500, New Date(2016, 4, 12))
        pps(3) = New people("Петров П.И.", "Владимир", 2800, New Date(2015, 7, 25))
        pps(4) = New people("Петров П.И.", "Новгород", 7320, New Date(2015, 11, 13))
        pps(5) = New people("Петров П.И.", "Муром", 1500, New Date(2016, 3, 12))
        pps(6) = New people("Степанов С.И.", "Смоленск", 2800, New Date(2015, 3, 12))
        pps(7) = New people("Цветков С.И.", "Сочи", 20500, New Date(2015, 4, 12))
        pps(8) = New people("Цветков С.И.", "Владимир", 3800, New Date(2015, 7, 25))
        pps(9) = New people("Цветков С.И.", "Новгород", 6850, New Date(2015, 11, 13))
        pps(10) = New people("Цветков С.И.", "Муром", 1900, New Date(2016, 3, 12))
        ListView1.View = View.Details
    End Sub
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim nmGrp(pps.Length - 1) As String
        MakeColumnHeaders(ListView1,
            "Фамилия И.О.", HorizontalAlignment.Left, 120,
            "Город", HorizontalAlignment.Left, 120,
            "Затраты", HorizontalAlignment.Left, 90,
            "Дата", HorizontalAlignment.Left, 120)
        For i = 0 To pps.Length - 1
            MakeRow(ListView1, 0, pps(i).Fio, pps(i).Town, pps(i).Cost, pps(i).StartDate)
            nmGrp(i) = pps(i).Fio
        Next
        Dim nm = nmGrp.Distinct()
        ListView1.Groups.Clear()
        Dim s As String
        For Each ss As String In nm
            ListView1.Groups.Add(ss, ss)
            s = ss
            Dim it = From t As ListViewItem In ListView1.Items Where t.Text = s
            If it.Count > 0 Then ListView1.Groups(ss).Items.AddRange(it.ToArray)
        Next
        ListView1.Columns(0).Width = 1
    End Sub
    Private Sub MakeColumnHeaders(ByVal lvw As ListView, ByVal ParamArray header_info() As Object)
        lvw.Columns.Clear()
        For i As Integer = header_info.GetLowerBound(0) To header_info.GetUpperBound(0) Step 3
            Dim col_header As ColumnHeader = lvw.Columns.Add(DirectCast(header_info(i), String), -1, DirectCast(header_info(i + 1), HorizontalAlignment))
            col_header.Width = DirectCast(header_info(i + 2), Integer)
        Next i
    End Sub
    Private Sub MakeRow(ByVal lvw As ListView, ByVal image_index As Integer, ByVal item_title As String, ByVal ParamArray subitem_titles() As String)
        Dim new_item As ListViewItem = lvw.Items.Add(item_title)
        new_item.ImageIndex = image_index
        For i As Integer = subitem_titles.GetLowerBound(0) To subitem_titles.GetUpperBound(0)
            new_item.SubItems.Add(subitem_titles(i))
        Next i
    End Sub
End Class
Public Class people
    Public Property Fio As String
    Public Property Town As String
    Public Property Cost As Integer
    Public Property StartDate As Date
    Public Sub New(ByVal ff As String, ByVal tn As String, ByVal cs As Integer, ByVal sd As Date)
        _Fio = ff
        _Town = tn
        _Cost = cs
        _StartDate = sd
    End Sub
End Class

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5