Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Datagrid

ristos [06.04.2011 17:57:17]

#

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?

neau33 [06.04.2011 20:33:07]

#

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-

neau33 [08.04.2011 11:57:25]

#

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 Sub

ristos [08.04.2011 19:08:00]

#

Hei,

Kiitos esimerkeistä, hyvin toimii tuo gridin sarakeleveyksien muuttaminen. Tuntuu vain siltä, että siirtyminen VB6:sta VB.NET:iin taitaa muodostaa melkoisen kynnyksen uuden oppimisessa.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta