hi... ich hatte vor ein paar monaten das gleiche problem und hab damals eine klasse geschrieben mit der man sowas lösen kann.
Public Class cls_gui_datagrid
Public dgTableStyle As DataGridTableStyle
Private iColumns As Integer = 0
Public Sub New(ByVal strMappingName As String)
dgTableStyle = New DataGridTableStyle()
dgTableStyle.HeaderForeColor = System.Drawing.SystemColors.ControlText
dgTableStyle.AlternatingBackColor = _
System.Drawing.SystemColors.InactiveCaptionText
dgTableStyle.MappingName = strMappingName
End Sub
Public Sub addColumn(ByVal strFormat As String, _
ByVal strMappingName As String, _
ByVal strHeaderText As String, _
ByVal iWidth As Integer)
Dim dgTextBoxColumn = New DataGridTextBoxColumn()
dgTextBoxColumn.Format = strFormat
dgTextBoxColumn.MappingName = strMappingName
dgTextBoxColumn.HeaderText = strHeaderText
dgTextBoxColumn.Width = iWidth
dgTableStyle.GridColumnStyles.Add(dgTextBoxColumn)
iColumns = iColumns + 1
End Sub
Public Sub redimGrid(ByRef dg As DataGrid, ByVal iColumn As Integer)
Dim i As Integer
Dim iWidthGesamt As Integer = 0
Dim iScrollbarWidth As Integer = 18
Dim iRowHeaderWidth As Integer = 35
Dim iWidthRedim As Integer
For i = 0 To iColumns - 1
If i <> iColumn Then
iWidthGesamt = iWidthGesamt + _
dgTableStyle.GridColumnStyles.Item(i).Width
End If
Next
iWidthRedim = dg.Width
If dg.Width - iWidthGesamt > 0 Then
iWidthRedim = dg.Width - iWidthGesamt - iScrollbarWidth
End If
If dg.RowHeadersVisible Then
iWidthRedim = iWidthRedim - iRowHeaderWidth
End If
dgTableStyle.GridColumnStyles.Item(iColumn).Width = iWidthRedim
End Sub
End Class hier ein beispiel für die verwendung der klasse:
Dim objStyle As New cls_gui_datagrid("tbl_cu_benutzer")
objStyle.addColumn("", "ID", "", 0)
objStyle.addColumn("", "Benutzername", "Benutzername", 150)
objStyle.addColumn("", "Aufbereitung", "Name", 250)
objStyle.addColumn("", "GueltigVon", "Gültig Von", 75)
objStyle.addColumn("", "GueltigBis", "Gültig Bis", 75)
objStyle.redimGrid(dgBenutzer, 2)
' Tablestyle dem Datagrid zuweisen
dgBenutzer.TableStyles.Add(objStyle.dgTableStyle)new:
erwartet einen parameter für's mapping. einfach einen tabellennamen übergeben
addColumn:
Format: Format in dem die Spalte angezeigt werden soll
Mappingname: spalte, die angezeigt werden soll (muss einem felder der tabelle entsprechen, die mit new übergeben wurde)
Header: Spaltentitel
Width: Breite der Spalte
redimGrid: (ändert die Breite einer Spalte, um das gesamte Grid auszufüllen)
DataGrid: Datagrid, das angepaßt werden soll
Column: Spalte, die für die anpassung herangezogen werden soll
lg, Robert |