Miten saan VB.NET:ssä Datagrid:ssä muutettua ohjelmallisesti sarakeleveyksiä, kuten VB6:ssa Msflexgrid:ssä?
Löytyykö esimerkkiä myös miten otetaan tietokantaan yhteys ohjelmallisesti?
Moi Kristofer!
Dim MyTableStyle As DataGridTableStyle = New DataGridTableStyle()
Dim MyTable As DataTable = CType(DataGrid1.DataSource, DataTable)
MyTableStyle.MappingName = MyTable.TableName
DataGrid1.TableStyles.Add(MyTableStyle)
DataGrid1.TableStyles(0).GridColumnStyles(0).width = 100
DataGrid1.TableStyles(0).GridColumnStyles(1).width = 150
'jne.
MyTable = Nothing
-Nea-
Moi taas Kristofer!
tässä hieman pidemmälle viety esimerkki DataGrid-objektin ominaisuusksien asettamiseen
Private Sub DataGrid1Layout(sender As System.Object, _
e As System.Windows.Forms.LayoutEventArgs)
AdjustDataGridColumnsAndRows sender, sender.Name
End Sub
Public Sub AdjustDataGridColumnsAndRows( _
ByRef dgObject As DataGrid, ByVal dgName As String)
If dgObject.VisibleRowCount > 0 Then
Dim theLastCol AsLong, theLastRow As Long
For i As Integer = 0 To dGrids.GetUpperBound(0)
If dGrids(i).name = dgName Then
theLastCol = dGrids(i).cols
theLastRow = dGrids(i).rows
End If
Next i
Dim p As System.Reflection.PropertyInfo
Dim obj As Object(), i As Long
For i As Integer = 0 to theLastCol
p = dgObject.GetType.GetProperty( _
"DataGridColumns", BindingFlags.FlattenHierarchy Or _
BindingFlags.IgnoreCase Or BindingFlags.Instance Or _
BindingFlags.NonPublic Or BindingFlags.Public Or _
BindingFlags.Instance Or BindingFlags.Static)
obj = p.GetValue(dgObject, _
BindingFlags.Instance Or BindingFlags.Static Or _
BindingFlags.GetProperty Or BindingFlags.Public Or _
BindingFlags.SuppressChangeType, Nothing, Nothing, Nothing)
Select Case i
Case 0
obj(i).Width = SomeValue
'Case etc...
Case Else
obj(i).Width = dgObject.PreferredColumnWidth
End Select
p = Nothing: obj = Nothing
Next i
For i As Integer = 0 To theLastRow
p = dgObject.GetType.GetProperty( _
"DataGridRows", BindingFlags.FlattenHierarchy Or _
BindingFlags.IgnoreCase Or BindingFlags.Instance Or _
BindingFlags.NonPublic Or BindingFlags.Public Or _
BindingFlags.Instance Or BindingFlags.Static)
obj = p.GetValue(dgObject, _
BindingFlags.Instance Or BindingFlags.Static Or _
BindingFlags.GetProperty Or BindingFlags.Public Or _
BindingFlags.SuppressChangeType, Nothing, Nothing, Nothing)
Select Case i
Case 0
obj(i).Height = SomeValue
'Case etc...
Case Else
obj(i).Height = dgObject.PreferredRowHeight
End Select
p = Nothing: obj = Nothing
Next i
End If
End SubHei,
Kiitos esimerkeistä, hyvin toimii tuo gridin sarakeleveyksien muuttaminen. Tuntuu vain siltä, että siirtyminen VB6:sta VB.NET:iin taitaa muodostaa melkoisen kynnyksen uuden oppimisessa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.