Inloggen
 
 
 
 
    
Standaard waarden zetten in DataGridView
Location: BlogsHenri Koppen - Developer    
Posted by: Henri Koppen 1-6-2007 14:57
Bij het maken van applicaties werk ik graag met eigen controls. Bij het maken van windows client applicaties loop je wel eens tegen nieuwe dingen aan, zoals een designer die code uitvoert terwijl je aan het programmeren bent en zelfs je code ongevraagd aanpast (wat wel weer mogelijkheden geeft). Daarnaast is het handig om zaken die je vaak doet al af te vangen.
Dit gaat over de DataGridView control uit Windows Forms VB.NET, versie 2.0 van het framework.

Wat ik wilde was het volgende:

Elke keer als ik een DataGridView op mijn form sleepte moest ik allemaal properties instellen, daar wilde ik vanaf, daarnaast wil ik met controls altijd meer dan de standaard.

Omdat ik van GUID’s hou wilde ik dat de sleutel van een tabel altijd verborgen blijft in het datagrid.

Je weet dat als je een eigen control maakt en je gebruikt bijv. “Inherit” dat deze na compileren er als een sleepbaar control in je toolbox bijkomt.

Onderstaat de code die ik heb gebruikt voor mijn eigen datagridview.

Bij Sub New() geef ik de standaard eigenschappen mee, werkt als een trein.
Dan de eigenschap SleutelKolomNaam. Als ik een datatable als datasource inzet wil ik dat de sleutelkolom als onzichtbare kolom wordt toegevoegd altijd als eerste kolom (cell(0)).

Als de eigenschap gezet wordt wordt de sub AddSleutelKolom toegevoegd. Alleen hier “kickt” de visual studio 2005 designer in. Als ik de eigenschap invoer, wordt er een kolom ook in de designer toegevoegd. Maak je de eigenschap weer leeg of verander je deze, dan ruimt ie de kolommen niet netjes op.

Vandaar dat ik kijk of er een “HuidigeGebruiker” object is. In designtime is deze er niet en wordt de kolom dus alleen nog maar runtime gezet.

Aardige leeslink is overigens ook http://www.codeproject.com/csharp/wsod.asp lees daar ook weer de WSOD uitleg van Microsoft.

Al met al een paar leerzame uurtjes.....

Code:

Public Class aDataGridView
    Inherits DataGridView

    Sub New()
        ' Standaard zaken bij een nieuw DataGridView
        Me.ReadOnly = True
        Me.AllowUserToAddRows = False
        Me.AutoResizeColumns()
        Me.MultiSelect = False
    End Sub

    Private Sub AddSleutelKolom(ByVal _Veld As String)
        ' Voeg sleutel kolom toe
        If Columns.Contains("SleutelKolom") Then
            Columns.Remove("SleutelKolom")
        End If

        If IsNothing(_Veld) OrElse _Veld.Length = 0 Then
            Exit Sub
        End If

        Dim col As New System.Windows.Forms.DataGridViewTextBoxColumn
        col.DataPropertyName = _Veld
        col.HeaderText = "SleutelKolom"
        col.Name = "SleutelKolom"
        col.ReadOnly = True
        col.Visible = False
        Me.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {col})

    End Sub

   
    Private _SleutelKolomNaam As String
    Public Property SleutelKolomNaam() As String
        Get
            Return _SleutelKolomNaam
        End Get
        Set(ByVal value As String)
            _SleutelKolomNaam = value

            ' Sleutel kolom toevoegen/verwijderen De check op een gebruiker is om de designer te foppen omdat ie anders
            ' controls gaat aanmaken
            If Not IsNothing(Functions.HuidigeGebruiker) Then
                AddSleutelKolom(_SleutelKolomNaam)
            End If

        End Set
    End Property

End Class

Copyright ©2007 Henri Koppen
Permalink |  Trackback

Comments (1)  
Betr: Standaard waarden zetten in DataGridView    By Henri on 1-6-2007 15:09
Hugo wist me direct te vertellen dat je
If Not IsNothing(Functions.HuidigeGebruiker) Then
kunt vervangen met
if me.designmode = false then

bedankt hugo!

  
 
Weblogs
    
Archief
    
Zoeken
    
 
 
 
 
Copyright 2006-2009 by Arcencus
Privacy Statement | Terms Of Use