Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887

    [1.1 VB] Orientamento Datagrid

    Si puo' visualizzare un datagrid in modo che i nomi di colonna siano la prima cella di una riga
    (cioe' invece che in flusso verticale, in flusso orizzontale)?

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    Re: [1.1 VB] Orientamento Datagrid

    Originariamente inviato da djciko
    Si puo' visualizzare un datagrid in modo che i nomi di colonna siano la prima cella di una riga
    (cioe' invece che in flusso verticale, in flusso orizzontale)?
    :master:

    costruendo l'html con un StringBuilder si farebbe in un attimo, ma col datagrid?boh! :master:
    Pietro

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    <asp:GridView ID="GridView1" runat="server" ShowHeader="false"></asp:GridView>

    codice:
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim dt As DataTable = libreria.GetDataTable(StringaConnessioneTest, "SELECT * FROM REGIONI ORDER BY CODICE_ISTAT_REGIONE")
    
            dt = getDataTableReverse(dt)
    
            Me.GridView1.DataSource = dt
            Me.GridView1.DataBind()
        End Sub
    
    
        Public Function getDataTableReverse(ByVal dt As DataTable) As DataTable
            Dim t As New DataTable()
            t.Columns.Add("campo", GetType(String))
            For i As Integer = 0 To dt.Rows.Count - 1
                t.Columns.Add("valore_" & i, GetType(String))
            Next
    
            For i As Integer = 0 To dt.Columns.Count - 1
                Dim dr As DataRow = t.NewRow()
                dr(0) = dt.Columns(i).ColumnName
                For j As Integer = 0 To dt.Rows.Count - 1
                    dr(j + 1) = dt.Rows(j)(i)
                Next
                t.Rows.Add(dr)
            Next
            Return t
    
        End Function
    le colonne sono tutte stringhe, perciò la formattazione date e numeri vanno fatte nell'evento databoud o simile (non ricordo)

    Pietro

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    funziona, bella li'...stavo provando a scriverla anche in un altro modo. poi la posto...

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da djciko
    funziona, bella li'...stavo provando a scriverla anche in un altro modo. poi la posto...

    spicciati che la debbo mettere in libreria
    Pietro

  6. #6
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Originariamente inviato da pietro09
    spicciati che la debbo mettere in libreria
    Magari fra un po' nel banner in alto ci sarà il cd rom della storica libreria di Pietro....
    Sarebbe la manna per tutti i nuovi (ma anche gli altri) sviluppatori di net.
    Il massimo per un nuovo programmatore, trovarsi con tutte le soluzioni pronte, create da uno che le usa per lavoro e, non per scrivere libri.

    Ciao e buona domenica a tutti.

    Legnetto

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Legnetto
    Magari fra un po' nel banner in alto ci sarà il cd rom della storica libreria di Pietro....
    Sarebbe la manna per tutti i nuovi (ma anche gli altri) sviluppatori di net.
    Il massimo per un nuovo programmatore, trovarsi con tutte le soluzioni pronte, create da uno che le usa per lavoro e, non per scrivere libri.

    Ciao e buona domenica a tutti.

    Legnetto

    La mia filosofia è questa: quando trovo che una funzione sia riusabile, la spiaccico nella libreria.

    E così tutte le soluzioni interessanti di questo forum e di quello javascript



    Pietro

  8. #8
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Dopo attenta riflessione ed il weekend rovinato su righe e colonne (a cena da amici pensavo all'aggiunta delle datarow ) ho concluso che il modo piu' veloce e' questo, in Pietro-Style:

    (all'inizio volevo fare un array di DataRow e poi ciclando in esso importarle nel datatable finale con NomeDataTable.ImportRow)

    Il secondo parametro visualizza o meno la testata con i nomi dei campi...

    codice:
        Public Function DataTableOrizzontale(ByVal dt As DataTable, ByVal AggiungiTestataVerticale As Boolean) As DataTable
            Dim DataTableGirato As New DataTable
            Dim indR As Integer = 0
    
            If AggiungiTestataVerticale = True Then
                Dim NomiCampi As New DataColumn
                NomiCampi.ColumnName = "NOME CAMPO"
                NomiCampi.DataType = GetType(String)
                DataTableGirato.Columns.Add(NomiCampi)
            End If
    
            ' Preparo le colonne
            For Each riga As DataRow In dt.Rows
                Dim nuovacolonna As New DataColumn("COLONNA " & CStr(indR), GetType(String))
                DataTableGirato.Columns.Add(nuovacolonna)
                indR += 1
            Next
    
            For indColonne As Integer = 0 To dt.Columns.Count - 1
                Dim nuovariga As DataRow = DataTableGirato.NewRow()
    
                Dim indPartenzaRighe = 0
                If AggiungiTestataVerticale = True Then
                    nuovariga(0) = "" & LCase(dt.Columns(indColonne).ColumnName) & ""
                    indPartenzaRighe = 1
                End If
    
                For indRighe As Integer = 0 To dt.Rows.Count - 1
                    nuovariga(indPartenzaRighe) = dt.Rows(indRighe)(indColonne)
                    indPartenzaRighe += 1
                Next
                DataTableGirato.Rows.Add(nuovariga)
            Next
    
            DataTableOrizzontale = DataTableGirato
        End Function

    Per sdebitarmi della logica ti posto una funzione che ho fatto per esplorare un dataset prima di Bindarlo ad una griglia, magari va in libreria anche questa
    (basta usarlo con: libreria.esplora_dataset(nomedataset))

    codice:
            Public Shared Sub esplora_dataset(ByVal ds As DataSet)
                HttpContext.Current.Response.Write("<div style=""WIDTH:100%; BORDER-RIGHT: red thin solid; BORDER-TOP: red thin solid; BORDER-LEFT: red thin solid; BORDER-BOTTOM: red thin solid; BACKGROUND-COLOR: #fffff0""><center>NOME DATASET: " & ds.DataSetName)
    
                Dim iTabelle As Integer
                Dim iRighe As Integer
                Dim iColonne As Integer
    
                For iTabelle = 0 To ds.Tables.Count - 1
                    ' Nome della tabella corrente
                    HttpContext.Current.Response.Write("<div style=""WIDTH:90%; BORDER-RIGHT: red thin solid; BORDER-TOP: red thin solid; BORDER-LEFT: red thin solid; BORDER-BOTTOM: red thin solid; BACKGROUND-COLOR: #ffffcc""><u>TABELLA: " & ds.Tables(iTabelle).TableName & "</u>")
                    For iRighe = 0 To ds.Tables(iTabelle).Rows.Count - 1
                        HttpContext.Current.Response.Write("
    <font color=red>RIGA N. " & iRighe & "</font>
    ")
                        For iColonne = 0 To ds.Tables(iTabelle).Columns.Count - 1
                            HttpContext.Current.Response.Write("<u>NOME COLONNA</u>: " & UCase(ds.Tables(iTabelle).Columns(iColonne).ColumnName) & "<font color=red>/</font>")
                            HttpContext.Current.Response.Write("<u>VALORE</u>: " & ds.Tables(iTabelle).Rows(iRighe)(iColonne) & "
    ")
                        Next
                    Next
                    HttpContext.Current.Response.Write("</div>
    
    ")
                Next
                HttpContext.Current.Response.Write("</center></div>")
            End Sub
    L'idea di Little Wood pero' non e' male. Cd Rom Asp.Net -tips dal mondo reale-
    Il best dei programmatori di Html.it

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    mi piace l'idea di parametrizzare la funzione a seconda di volere o meno i nomi dei campi.

    Ho però tolto la formattazione bold dei nomi dei campi perchè mi sembra limitativo. :master:

    Per quanto riguarda i DataSet, non ricordo più l'ultima volta che li ho usati :master:
    comunque la funzione è utile
    Pietro

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.