Herkese Merhaba, ms Sql veritabanından vb.net de dgv üzerinde listelediğim bir tablom var. resimdeki gibi açılabilir liste halinde gruplandırmak istiyorum. google a datagridview groups yazıldığında bir proje çıkıyor lakin c# dilinde vb.net e çeviremedim. verilerimi vb.net dilinde resimdeki gibi listelemek için nasıl bir yol izleyebilirim. yardımcı olursanız sevinirim.
Vb.net Datagridview Listesini Gruplandırma
Merhaba,
Ekran görüntüsüne göre, Toplamlar sorgusu oluşturmanız gerekir
Ekran görüntüsüne göre, Toplamlar sorgusu oluşturmanız gerekir
İyi olan tek şey bilgi ve kötü olan tek şey de cehalettir. (Sokrates)
Formunuza bir DataGridView ve bir BindingSource ekleyin ve örneğinizden yola çıkarak
Bir diğer yöntem olarak ben tasvip etmesem de dotnetspider.com veya telerik.com gibi websitelerinden C# için bulduğunuz kodları vb.net kodlarına çevirebilirsiniz.
- Verilerinizi gruplamak için gerekli sınıfları aşağıdaki koda benzer şekilde tanımlayın.
Kod:Public Class Patient
Public Property Name As String
Public Property Medications As List(Of Medication)
Public Sub New(name As String)
Me.Name = name
Medications = New List(Of Medication)()
End Sub
End Class
Public Class Medication
Public Property Drug As String
Public Property Dosage As Integer
Public Property Date As DateTime
Public Sub New(drug As String, dosage As Integer, [date] As DateTime)
Me.Drug = drug
Me.Dosage = dosage
Me.Date = [date]
End Sub
End Class
- VErilerinizi listeye kodlarınızı aşağıdaki örneğe benzer şekilde ekleyin:
Kod:Dim patients As New List(Of Patient)()
Dim christoff As New Patient("Christoff")
christoff.Medications.Add(New Medication("Hydralazine", 20, New DateTime(2013, 1, 13)))
christoff.Medications.Add(New Medication("Combivent", 5, New DateTime(2013, 1, 2)))
Dim david As New Patient("David")
david.Medications.Add(New Medication("Indocin", 50, New DateTime(2013, 1, 3)))
Dim janet As New Patient("Janet")
janet.Medications.Add(New Medication("Combivent", 30, New DateTime(2013, 2, 3)))
janet.Medications.Add(New Medication("Indocin", 15, New DateTime(2013, 2, 3)))
Dim melanie As New Patient("Melanie")
melanie.Medications.Add(New Medication("Dilantin", 100, New DateTime(2013, 1, 12)))
Dim sam As New Patient("Sam")
sam.Medications.Add(New Medication("Enbrel", 20, New DateTime(2013, 1, 7)))
patients.Add(christoff)
patients.Add(david)
patients.Add(janet)
patients.Add(melanie)
patients.Add(sam)
- Aşağıdakine benzer kodla DataGrid ve BindingSource ayarlayın:
Kod:BindingSource1.DataSource = patients
DataGridView1.DataSource = BindingSource1
With DataGridView1
.AutoGenerateColumns = False
' Add the Patient column
Dim patientColumn As New DataGridViewTextBoxColumn()
patientColumn.DataPropertyName = "Name"
patientColumn.HeaderText = "Patient"
.Columns.Add(patientColumn)
' Add the Drug column
Dim drugColumn As New DataGridViewTextBoxColumn()
drugColumn.DataPropertyName = "Drug"
drugColumn.HeaderText = "Drug"
.Columns.Add(drugColumn)
' Add the Dosage column
Dim dosageColumn As New DataGridViewTextBoxColumn()
dosageColumn.DataPropertyName = "Dosage"
dosageColumn.HeaderText = "Dosage"
.Columns.Add(dosageColumn)
' Add the Date column
Dim dateColumn As New DataGridViewTextBoxColumn()
dateColumn.DataPropertyName = "Date"
dateColumn.HeaderText = "Date"
.Columns.Add(dateColumn)
End With
- DataGrridviewRow ve dataGridviewCell kullanarak Datagride verileri eklemek için aşağıdakine benzer şekilde kodlarınızı düzenleyin:
Kod:For Each patient As Patient In patients
Dim row As New DataGridViewRow()
row.CreateCells(DataGridView1)
row.Cells(0).Value = "Patient " & patient.Name & " (" & patient.Medications.Count & ")"
DataGridView1.Rows.Add(row)
For Each med As Medication In patient.Medications
Dim medRow As New DataGridViewRow()
medRow.CreateCells(DataGridView1)
medRow.Cells(1).Value = med.Drug
medRow.Cells(2).Value = med.Dosage
medRow.Cells(3).Value = med.Date.ToShortDateString()
DataGridView1.Rows.Add(medRow)
Next
Next
- Grupla/Grubu çöz sitilini belirlemek için aşağıdakine benzer şekilde kodunuzu revize ederek görünümünüzü ayarlayın:
Kod:For Each row As DataGridViewRow In DataGridView1.Rows
If row.Cells(0).Value IsNot Nothing AndAlso row.Cells(0).Value.ToString().StartsWith("Patient") Then
row.DefaultCellStyle.Font = New Font(DataGridView1.Font, FontStyle.Bold)
End If
Next
Bir diğer yöntem olarak ben tasvip etmesem de dotnetspider.com veya telerik.com gibi websitelerinden C# için bulduğunuz kodları vb.net kodlarına çevirebilirsiniz.
Konuyu Okuyanlar: 1 Ziyaretçi