Группировка в 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д