Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [VB.NET]Datagrid e TableStyle

    Ho un Datagrid a cui associo un dataset, i dati del Database vengono visualizzati correttamente nel Datagrid. Visto che voglio modificare la larghezza delle singole colonne ho impostato un TableStyle:
    codice:
    Dim tableStyle As New DataGridTableStyle
            tableStyle.MappingName = "Tabella1"
    
            Dim Col1 As New DataGridBoolColumn
            Col1.MappingName = "N°"
            Col1.HeaderText = "Num."
            Col1.Width = 10
            Col1.AllowNull = False
            tableStyle.GridColumnStyles.Add(Col1)
    
            Dim Col2 As New DataGridBoolColumn
            Col2.MappingName = "azione"
            Col2.HeaderText = "Azione"
            Col2.Width = 50
            Col2.AllowNull = False
            tableStyle.GridColumnStyles.Add(Col2)
    
            DataGrid1.TableStyles.Add(tableStyle)
            OleDbDataAdapter1.Fill(DataSet1)
    Perché però non rispetta questo stile che ho creato ma la larghezza delle colonne è sempre quella di default?

  2. #2
    scusa ma è così semplice impostare il datastyle dalle proprietà... perchè vuoi impostarlo da codice??
    I database... la mia passione + o -

  3. #3

    forse vuoi avere dimensioni diverse fra loro per le colonne?

    io faccio così
    Dim vettstile(25) As Integer
    azzeravett() 'setta a 75 tutti gli elementi del vettore
    vettstile(0) = 100
    vettstile(1) = 100
    vettstile(2) = 100
    vettstile(3) = 0
    vettstile(4) = 0
    vettstile(5) = 0
    vettstile(6) = 0
    stileDatagrid(DataGrid1, 7)

    Public Sub azzeravett()
    Dim i As Integer
    While i < 26
    vettstile(i) = 75
    i += 1
    End While
    End Sub

    Public Sub stileDatagrid(ByRef datagrid As DataGrid, ByVal ncolonne As Integer)
    Try
    Dim ts As DataGridTableStyle = New DataGridTableStyle
    ts.MappingName = datagrid.DataMember
    datagrid.TableStyles.Add(ts)
    Dim index, x As Integer
    index = x = 0
    Dim largh As Integer
    While x < ncolonne
    largh = vettstile(x)
    datagrid.TableStyles(0).GridColumnStyles(x).Width = largh
    x += 1
    End While

    Catch
    End Try
    End Sub

  4. #4
    scusa ma è così semplice impostare il datastyle dalle proprietà... perchè vuoi impostarlo da codice??
    Perchè ho la necessità di impostare diverse larghezze per le singole colonne e poi perché devo inserire nel datagrid una ComboBox.

    io faccio così[...]
    Gentilmente puoi descrivermi i passaggi che devo seguire? ho inserito il codice che mi hai postato però la larghezza delle colonne rimane sempre 75 di default. Io in ordine faccio:
    1)Assegno alla proprietà Datasource del datagrid il dataset che mi serve(non lo faccio da codice).
    2)richiamo la funzione che mi hai dato.
    3)Faccio il fill, OleDbDataAdapter1.Fill(DataSetTemp1.temp)
    Ma evidentemente salto qualche passaggio fondamentale.
    Con il codice che ho postato io riuscivo facilmente a modificare le proprietà delle singole colonne e ad inserire una combo ma purtroppo non la trovo più quella funzione!
    Grazie comunque ad entrambe

  5. #5

    così a me funonzia

    dim da3 as new OleDbDataAdapter
    dim daset3 as new dataset
    dim strsql as string
    strsql = "select Nsriferimento as [CodOggetto],oggetti as [Descrizione] ,Categoria as [Cat]"

    dettagli1(da3,strsql,DataGrid4, daset3, "ElencoOggettiAcquistati")
    azzeravett()
    vettstile(0) = 155
    vettstile(1) = 110
    vettstile(2) = 110
    vettstile(3) = 80
    vettstile(4) = 80
    vettstile(5) = 105
    (le altre sono già 75)
    stileDatagrid(DataGrid4, 3) ' 3 è il NUMERO DI CLOLONNE


    Public Sub dettagli1(ByVal daol As OleDbDataAdapter, ByVal strsql As String, ByVal datagrid As DataGrid, ByVal daseta As DataSet, ByVal stringa As String)


    daseta.Clear()
    objConn.Open()
    daol.SelectCommand = New OleDbCommand(strsql, objConn)
    daol.Fill(daseta, "spese")
    datagrid.DataSource = daseta.Tables("spese")
    datagrid.SetDataBinding(daseta, "spese")
    objConn.Close()
    objConn.Close()

    datagrid.CaptionText = stringa
    End Sub

    Le sub azzeravet e stileDatagrid le hai nel post precedente
    il numero di colonne è pari al numero di colonne del DataGrid partendo a contare da 1 e non da 0

  6. #6
    ho dimenticato il from nella strsql.........perdono!

  7. #7
    Grazie! non mi funzionava perché avevo incasinato un po' troppe cose, ho fatto un po di pulizia e mi funziona.
    Mi sai dire come faccio ad inserire una combo nel datagrid? Ho una classe che mi permette di fare ciò con il mio vecchio metodo mi risultava facile, bastava che facevo:
    codice:
    Dim Col1 As New DataGridComboBoxColumn
            Col1.MappingName = "N°"
            Col1.HeaderText = "Num."
            Col1.Width = 10
            Col1.AllowNull = False
            tableStyle.GridColumnStyles.Add(Col1)
    Con il codice che mi hai postato mi sai dire come dovrei fare?
    e grazie ancora

  8. #8
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    ma

    datagrid.DataSource = daseta.Tables("spese")
    datagrid.SetDataBinding(daseta, "spese")
    nn sono la stessa cosa ???

  9. #9
    comunque la larghezza di ogni colonna puoi stabilirla anche dalle proprietà...
    I database... la mia passione + o -

  10. #10
    Se sai quante e quali colonne puoi fare il tuo ragionamento Power... ma se non sai a priori quanti sono le colonne NO
    Io sfrutto spesso un datagrid per visualizzare 10 cose diverse(esempio di una cassa dove devi fargli vedere le spese, le entrate, i prestiti, le rate delle spese ecc.) e quindi cambiano il numero e la dimenensione delle colonne al variare del tipo di dati

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.