Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: colonne delle gridview

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    183

    colonne delle gridview

    ho notato che visualizzando una tabella a 3 colonne con una gridview, le dimensioni delle colonne vengono stabilite automaticamente.
    Come è possibile variare la larghezza di ogni singola colonna?
    Se il testo da visualizzare è troppo lungo vorrei che, semplicemente, si andasse a capo, ma che la larghezza della colonna rimanesse costante.

    uso visual web developer 2005 express.

    grazie

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    183
    ho letto la tua risposta circa le gridview ma non ho capito molto bene..... sono un vero principiante!
    in particolare non ho capito dove inserire i codici da te proposti.
    molto semplicemente io vorrei riuscire a creare una gridview con un paio di colonne.
    entrambe le colonne devono avere una dimensione fissa (diciamo 10 la prima e 20 la seconda).
    in caso il testo da visualizzare sia maggiore, si dovrà andare a capo al primo spazio prima della fine della cella.
    Mi puoi aiutare? .... magari inviandomi un piccolo file di prova aspx (VB) via email
    iorso@yahoo.com
    grazie infinite!

    Danilo

    iorso@yahoo.com

  4. #4
    Purtroppo il capo mi ha riempito di cose da fare per cui non posso farti un'esempio personalizzato

    comunque questa vecchia pagina l'ho appena ritestata e funziona pefettamente, ti basta taroccare il nome del database e dei campi per avere un'esempio funzionante sul tuo computer:

    codice:
    <%@ Page Language="VB" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.OleDb" %>
    <script runat="server">    
        Private Sub PopulatemyGridView()
            Dim connectionString As String = AccessConnectionString()
            Dim accessConnection As OleDbConnection = New OleDbConnection(connectionString)
            Dim sqlQuery As String = "SELECT [ID], [Codice], [ITAdescription], [ENGdescription] FROM Codes ORDER BY [ITAdescription] ASC;"
            Dim accessCommand As New OleDbCommand(sqlQuery, accessConnection)
            Dim myDataAdapter As New OleDbDataAdapter(accessCommand)
            Dim myDataTable As New DataTable("Codes")
            myDataAdapter.Fill(myDataTable)
            Dim dataTableRowCount As Integer = myDataTable.Rows.Count
            If dataTableRowCount > 0 Then
                myGridView.DataSource = myDataTable
                myGridView.DataBind()
                myGridView.Columns(0).ItemStyle.Width = New Unit(50, UnitType.Pixel)
                myGridView.Columns(1).ItemStyle.Width = New Unit(100, UnitType.Pixel)
                myGridView.Columns(2).ItemStyle.Width = New Unit(100, UnitType.Pixel)
            End If
        End Sub
    
        Private Function AccessConnectionString() As String
            Dim accessDatabasePath As String = Server.MapPath("~/App_Data/myDatabase.mdb")
            Return String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};", accessDatabasePath)
        End Function
    
        Private Property GridViewSortDirection() As String
            Get
                Return IIf(ViewState("SortDirection") = Nothing, "ASC", ViewState("SortDirection"))
            End Get
            Set(ByVal value As String)
                ViewState("SortDirection") = value
            End Set
        End Property
    
        Private Property GridViewSortExpression() As String
            Get
                Return IIf(ViewState("SortExpression") = Nothing, String.Empty, ViewState("SortExpression"))
            End Get
            Set(ByVal value As String)
                ViewState("SortExpression") = value
            End Set
        End Property
    
        Private Function GetSortDirection() As String
            Select Case GridViewSortDirection
                Case "ASC"
                    GridViewSortDirection = "DESC"
                Case "DESC"
                    GridViewSortDirection = "ASC"
            End Select
            Return GridViewSortDirection
        End Function
    
        Protected Sub myGridView_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs)
            myGridView.DataSource = SortDataTable(myGridView.DataSource, True)
            myGridView.PageIndex = e.NewPageIndex
            myGridView.DataBind()
            lblRecordsCount.Text = "Stai vedendo la pagina " & (myGridView.PageIndex + 1) & " di " & myGridView.PageCount
        End Sub
    
        Protected Function SortDataTable(ByVal dataTable As DataTable, ByVal isPageIndexChanging As Boolean) As DataView
            If Not dataTable Is Nothing Then
                Dim dataView As New DataView(dataTable)
                If GridViewSortExpression <> String.Empty Then
                    If isPageIndexChanging Then
                        dataView.Sort = String.Format("{0} {1}", GridViewSortExpression, GridViewSortDirection)
                    Else
                        dataView.Sort = String.Format("{0} {1}", GridViewSortExpression, GetSortDirection())
                    End If
                End If
                Return dataView
            Else
                Return New DataView()
            End If
        End Function
    
        Protected Sub myGridView_Sorting(ByVal sender As Object, ByVal e As GridViewSortEventArgs)
            GridViewSortExpression = e.SortExpression
            Dim pageIndex As Integer = myGridView.PageIndex
            myGridView.DataSource = SortDataTable(myGridView.DataSource, False)
            myGridView.DataBind()
            myGridView.PageIndex = pageIndex
        End Sub
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
            PopulatemyGridView()
        End Sub
        
        Protected Function brString(ByVal strText As String) As String
            ' Tronco una stringa se è più lunga di N caratteri
            Dim i As Integer
            Dim parti() As String
            Dim returnString As String = ""
            parti = Split(strText, ",")
            For i = 0 To UBound(parti)
                ' Tarocca il 10 per decidere la lunghezza a cui troncare
                If Len(parti(i)) > 10 Then
                    returnString += parti(i).Substring(0, 10) + " ..." + "
    "    ' Tronco
                Else
                    returnString += parti(i) + "
    "     ' Non tronco
                End If
            Next
            Return returnString
        End Function 'brString      
        
    </script>
    
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head" runat="server">
        <title></title>
    </head>
    
    
    <body>
        <form id="form" runat="server">
            <div align="center">
                
    
                
    
    
                    <asp:GridView ID="myGridView"  
                    AllowPaging="True" 
                    AllowSorting="True" 
                    AutoGenerateColumns="False"
                    EmptyDataText="No records found" 
                    PagerSettings-Mode="NumericFirstLast" PageSize="25"
                    DataKeyNames="ID"
                    OnPageIndexChanging="myGridView_PageIndexChanging" 
                    OnSorting="myGridView_Sorting"
                    runat="server">
                    <RowStyle CssClass="GridItem" />
                    <HeaderStyle CssClass="GridHeader" />
                    <AlternatingRowStyle CssClass="GridAltItem" />
                    <PagerStyle CssClass="GridPager" HorizontalAlign="Center" />
                    <Columns>
                        <asp:TemplateField HeaderText="ID" SortExpression="ID">
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Bind("ID") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Codice" SortExpression="Codice">
                            <ItemTemplate>
                                <asp:Label ID="Label2" runat="server" Text='<%# Bind("Codice") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="ITAdescription" SortExpression="ITAdescription">
                            <ItemTemplate>
                                <asp:Label ID="Label3" runat="server" Text='<%# brString(DataBinder.Eval(Container.DataItem,"ITAdescription").ToString()) %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                        <PagerSettings Mode="NumericFirstLast" />
                    </asp:GridView>    
                            
                  
                                  
                <asp:Label ID="lblRecordsCount" runat="server" Text=""></asp:Label>
                
    
                
    
    
            </div>
        </form>
    </body>
    </html>
    Ci sono delle funzioni che non ti servono a nulla (ordinamento, recordcount, etc) ...ignorale.

    A te interessa la sintassi che c'è in:
    - PopulatemyGridView (per la larghezza delle colonne)
    - brString (per troncare la stringa)

    Poi, nell gridView, vedi come richiamare la funzione brString

    Fammi sapere se ti ci ritrovi ma prima fai delle prove da solo perchè oggi sono incasinatissimo.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    183
    sei gentilissimo!
    ora farò delle prove, anche se temo che sarà difficile per me modificare il tuo codice.

    ti faccio questa proposta:
    ora scriverò il codice dei miei files.
    se avrai tempo.... ti chiedo gentilmente di modificare i miei files.
    Io intanto provo a dare uno sguardo al tuo lavoro.
    Grazie infinite

    aspx :

    codice:
     
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="000grid.aspx.vb" Inherits="_000grid" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Pagina senza titolo</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
    
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataKeyNames="REV"
                DataSourceID="AccessDataSource1" Height="1px" Width="400px">
                <Columns>
                    <asp:BoundField DataField="REV" HeaderText="REV" ReadOnly="True" SortExpression="REV" />
                    <asp:BoundField DataField="Evento" HeaderText="Evento" SortExpression="Evento" />
                </Columns>
            </asp:GridView>
            <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/cronaca.mdb"
                SelectCommand="SELECT [REV], [Evento] FROM [2_Eventi storici]"></asp:AccessDataSource>
            </div>
        </form>
        
    </body>
    </html>
    aspx.vb :

    codice:
     Partial Class _000grid
        Inherits System.Web.UI.Page
    
    
        
    End Class

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    183
    i miei tentativi non sono andati a buon fine.
    confido sul vostro aiuto per modificare il mio codice
    grazie

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    183
    lancio ancora un appello d'aiuto

  8. #8
    non ho capito il problema.. la larghezza delle colonne??

    specifica un css class per le columns

    da CSS metti la larghezza (width) fissa , all'interno poi dovrebbe andare a capo normalmente.. (white-space comunque è l'attributo che lo setta
    Fiore Bat - www.bcscommunity.it

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    183
    proverò nuovamente a spiegare il problema:
    database realizzato con access:
    una tabella con tre colonne che voglio visualizzare in una gridview.
    realizzo la cosa con visualwebdeveloper (scusate ma non sono molto esperto!)
    il risultato automatico propone tre colonne di una larghezza che a prima vista non è modificabile.
    si riesce ad impostare solamente l'ingombro totale di tutta la gridview.
    io vorrei semplicemente assegnare delle dimensioni alle mie tre colonne:
    ad esempio la prima 10 pxc, 30 alla seconda e 10 pxc
    da quel poco che ho capito, bisogna agire sul codice visto che visualwebdeveloper non permette personalizzazioni alla larghezza delle colonne.
    visto che non sono un esperto con i codici, ho postato qui il codice che risulta dalla creazione della mia gridview.
    vi chiedo gentilmente di autarmi a modificare il codice in modo dsa poter attribuire delle larghezze prefissate alle colonne.

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    183
    Sono sempre più stupito che nessuno sia in grado di darmi una mano!
    Pensavo che la mia fosse una domanda molto semplice....
    Forse è troppo semplice e i programmatori esperti non vogliono abbassarsi al mio livello...

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 © 2026 vBulletin Solutions, Inc. All rights reserved.