Con risposta GridView Sort

  • giovedì 5 aprile 2012 16:31
     
     

    In ambiente WEB l'oggetto GridView [Grd] mi inserisce automaticamente nei titoli delle colonne il nome del campo

    Se lo sostituisco con una descrizione lo sort non è più attivo (per il momento la descrizione l'ho inserita come tooltip)

    Inoltre non posso dimensionare le colonne

    .............................................................................
    Grd.AllowSorting = True
    Grd.DataSource = oDT [ogetto DataTable]
    Grd.DataBind()
    ............................................................................
    naDimensioneColonneBrowse = Session("dimensionecolonnebrowse")
    saTitoliColonneBrowse = Session("titolicolonnebrowse")
    For Cnt = 0 To UBound(saTitoliColonneBrowse)
            Grd.HeaderRow.Cells.Item(Cnt + 1).ToolTip = saTitoliColonneBrowse(Cnt) 
             Grd.HeaderRow.Cells.Item(Cnt + 1).Width = naDimensioneColonneBrowse(Cnt)     ' non ha effetto
    Next
    ..........................................................................


    arturo priolo

Tutte le risposte

  • giovedì 5 aprile 2012 18:08
     
     
    puoi settare il testo dell'intestazione colonna con HeaderText che è disponibile sia per templatecolumn che boundcolumn
  • giovedì 5 aprile 2012 19:10
    Postatore
     
     

    Le colonne sono generate automaticamente oppure le hai dichiarate nel markup?


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva

  • martedì 10 aprile 2012 06:37
     
     
    Le colonne sono generate automaticamente

    arturo priolo

  • martedì 10 aprile 2012 07:47
    Postatore
     
     

    Ti consiglio allora di dichiarare le colonne nel markup: in questo modo, per ogni bound field potrai impostare il titolo, l'espressione su cui effettuare il sort e la larghezza che desideri.

    In generale, la dichiarazione esplicita delle colonne garantisce una flessibilità maggiore, quindi è solitamente la tecnica preferibile. Trovi un semplice esempio nella documentazione ufficiale: http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.boundfield.aspx.


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva

  • venerdì 13 aprile 2012 14:29
     
      Contiene codice
           

    Ho necessità di creare dinamicamente le colonne

    Ma con il codice seguente mi crea un grid doppio (immagine allegata)

    In ogni caso quando forzo l'headertext le colonne non risultano pùeditabili per lo sort

    ---------------------------------------------

    naDimensioneColonneBrowse = Session("dimensionecolonnebrowse") saTitoliColonneBrowse = Session("titolicolonnebrowse") saCampiBrowse = Session("campibrowse") For Cnt = 0 To UBound(saTitoliColonneBrowse) Dim oField As New BoundField() oField.DataField = saCampiBrowse(Cnt) oField.HeaderText = saTitoliColonneBrowse(Cnt) Grd.Columns.Add(oField) Next Grd.DataSource = oDT

    Grd.DataBind()



    arturo priolo

  • venerdì 13 aprile 2012 14:33
    Postatore
     
     

    Non c'è alcun immagine allegata.

    Se cambi l'HeaderText, devi impostare la proprietà SortExpression sul nome del campo su cui effettuare l'ordinamento.


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva

  • venerdì 13 aprile 2012 15:39
     
     


    OK per la proprietà sortexpression

    Resta il fatto che se genero dinamicamente le colonne e poi associo al grid un datatable  mi genera un grid raddoppiato (esempio)

    codice :

           saTitoliColonneBrowse = Session("titolicolonnebrowse") ' {"Codice","Descrizione"}
            saCampiBrowse
    = Session("campibrowse") ' {"Codfor,ragcoc"}
           
    For Cnt = 0 To UBound(saTitoliColonneBrowse)
               
    Dim oField As New BoundField()
                oField
    .DataField = saCampiBrowse(Cnt)
                oField
    .HeaderText = saTitoliColonneBrowse(Cnt)
                Grd
    .Columns.Add(oField)
           
    Next
            Grd
    .DataSource = oDT     ' datatable generata con il comando sql : "select codfor,ragsoc from fornit"       

            Grd.DataBind()


    arturo priolo

  • venerdì 13 aprile 2012 16:15
    Postatore
     
     Con risposta
    Devi impostare la proprieà AutoGenerateColumns della GridView su false.

    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva

    • Contrassegnato come risposta arcturus160340 venerdì 13 aprile 2012 16:59
    •