vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
DataGridView Sortierung / nachträgliche erstellte Column 
Autor: 3rdInvisible
Datum: 19.11.09 12:57

Hallo zusammen,

ich habe mehrere DGV's in denen ich Abfragen über 2 Tabellen (Access) einlese (Tabelle A daten Tabelle B optionale Daten).

Die Funktion dazu :
Module db
'......
'......
 
Public Sub Load2Grid(ByRef grid As System.Windows.Forms.DataGridView, ByVal _
  abfrage As String)
        If grid IsNot Nothing Then
            Dim adapter As New System.Data.OleDb.OleDbDataAdapter(abfrage, _
              AccessCon)
            Dim dataset As New System.Data.DataSet
            Try
                adapter.Fill(dataset)
                grid.DataSource = dataset.Tables(0)
                grid.Update()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
            grid.AutoResizeColumns()
        End If
End Sub
 
 
'.....
'.....
End Module
Funktioniert soweit einwandfrei.

Füge ich jetzt zu dem bereits befüllten DGV eine weiter Spalte hinzu die nur mit Checkboxen
befüllt wird. Die Checkboxen werden gechecked bzw. unchecked abhängig vom Wert einer Spalte.
Wie folgt.
Public Sub RefreshGrid()
        Me.Cursor = Cursors.WaitCursor
        db.Inititalize() 'Datenbank anbindung läuft in eigenem Modul
 
        DataGridView1.Columns.Clear()
        DataGridView1.Update()
 
        ' DataGridView mit Datenfüllen
        db.Load2Grid(Me.DataGridView1, meine_abfrage)
 
        ' Spaltennamen setzen und formatierung
        DataGridView1.Columns(0).HeaderText = "..."
        DataGridView1.Columns(1).HeaderText = "..."
        DataGridView1.Columns(2).HeaderText = "..."
        DataGridView1.Columns(3).HeaderText = "..."
        DataGridView1.Columns(4).HeaderText = "..."
        DataGridView1.Columns(5).DefaultCellStyle.ForeColor = Color.Red
        DataGridView1.Columns(5).HeaderText = "..."
        DataGridView1.Columns(6).Visible = False
        DataGridView1.AutoResizeColumns()
        DataGridView1.Update()
 
 
        ' Zusätzliche Spalte einfügen
        DataGridView1.Columns.Add("upd", "Kontakt")
 
        ' für jede Reihe
        For i As Integer = 0 To DataGridView1.Rows.Count - 1
            ' Cell als CheckBoxCell setzen
            DataGridView1.Rows(i).Cells(7) = New DataGridViewCheckBoxCell()
 
            ' Abhängig vom Wert in Spalte 6 die Checkbox setzen
            If Not IsDBNull(DataGridView1.Rows(i).Cells(6).Value) Then
                If DataGridView1.Rows(i).Cells(6).Value = 1 Then
                    DataGridView1.Rows(i).Cells(7).Value = True
                Else
                    DataGridView1.Rows(i).Cells(7).Value = False
                End If
            Else
                DataGridView1.Rows(i).Cells(7).Value = False
            End If
        Next
 
        'Und das auch für die anderen 2 DGV´s
 
 
End Sub
Soweit alles kein Problem, die Daten werden so angezeigt wie ich mir
es vorgestellt habe, da die Checkboxen ja auch funktional sein sollen
habe ich folgenden Handler definiert.

Public Sub DataRowCheck(ByVal sender As System.Object, ByVal e As _
  DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick, _
  DataGridView2.CellContentClick, DataGridView3.CellContentClick
 
        ' Wird das event von den möglichen DGV´s gesendet
        If sender Is DataGridView1 Or sender Is DataGridView2 Or sender Is _
          DataGridView3 Then
 
            ' sender bereitstellen
            Dim t As DataGridView = CType(sender, _
              System.Windows.Forms.DataGridView)
            If t IsNot Nothing Then
                't.Update()
                ' ist auf die richtige Spalte geklickt und nicht auf den 
                ' ColHeader
                If e.ColumnIndex = 7 And e.RowIndex >= 0 Then
                    ' verarbeite die entsprechenden Daten
                    Dim k As String = t.Rows(e.RowIndex).Cells(0).Value
                    Dim sw As Boolean = t.Rows(e.RowIndex).Cells(7).Value
                    SetAngemailt(k, sw)
                    t.Update()
                    RefreshGrid()
                End If
            End If
 
        End If
    End Sub
Alles super, DOCH .... wenn der "User" auf den Colheader
klickt um das DGV zu sortieren, sind die Checkboxen weg,
die Spalte ist da, das DGV ist sortiert, aber die Checkboxen
sind futsch. Ich vermute das es hieran liegt

'.....
DataGridView1.Rows(i).Cells(7) = New DataGridViewCheckBoxCell()
'.....
Hat jemand ne Idee ?

Mfg 3rdInvisible
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
DataGridView Sortierung / nachträgliche erstellte Column2.5303rdInvisible19.11.09 12:57
Re: DataGridView Sortierung / nachträgliche erstellte Column1.760ModeratorDaveS19.11.09 13:05
Re: DataGridView Sortierung / nachträgliche erstellte Column1.781ModeratorFZelle19.11.09 13:07
Re: DataGridView Sortierung / nachträgliche erstellte Column1.7763rdInvisible19.11.09 13:39

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel