49 messaggi dal 29 dicembre 2003
Ciao ho un problema con il Sort Manuale del gridview

mio scopo è creare una header personalizzata che tramite delle frecce (piccole immagini)indicano se il sort è crescente o descescente.

ho trovato un esempio in rete che ho cercato di adattare alle mie necessità ma con notevoli difficoltà

Problemi. la routine richiamata da gridview ]OnSorting="GridView1_Sorting" non attiva il codice al click sulle colonne ( si attiva il postback ma senza che la sub viene attivata). Mi sono accorto che il problema è legato alla Sub gv_rowcreated. (se disattivo quest'ultima la Sub GridView1_Sorting si attiva al click )

cosa sbaglio?
grazie


invio una frazione del gridview interessato al problema
+ codice per il sort
<asp:GridView ID="gvShowRecord" 
runat="server" 
CellPadding="4" 
ForeColor="#333333" 
GridLines="None" 
AllowPaging="True"
AutoGenerateColumns="False"
AllowSorting="True" 
DataKeyNames="PN_CODE"
OnRowCreated="gv_rowcreated"
OnSorting="GridView1_Sorting"
DataSourceID="AccessDataSource2" 
Height="78px" 
HeaderStyle-Wrap="False" 
ShowFooter="True" EnableViewState="True">




qui ricavo la testata della colonna e gli inserisco l'immagine

Sub gv_rowcreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
        If e.Row.RowType = DataControlRowType.Header Then
            Dim nomecolonna As String
            Dim numCell As Integer
            numCell = e.Row.Cells.Count

            For I = 0 To numCell - 1
                Dim linkbuttonordinamento As LinkButton
                linkbuttonordinamento = e.Row.Cells(I).Controls(0)
                nomecolonna = linkbuttonordinamento.Text

                Dim ImageButtonOrdinamento As New ImageButton
                ImageButtonOrdinamento.CommandName = linkbuttonordinamento.CommandName

                Dim commandArgument As String = linkbuttonordinamento.CommandArgument
                ImageButtonOrdinamento.CommandArgument = commandArgument
                ImageButtonOrdinamento.ToolTip = "Ordina per " + nomecolonna
                ImageButtonOrdinamento.Width = 15

                ' ##########  stabilisco l'immagine da visualizzare
                ImageButtonOrdinamento.ImageUrl = "~/images/frsun.gif"
                If ViewState("SortExpression") IsNot Nothing Dim sortExpression As String = ViewState("SortExpression").ToString
                    If linkbuttonordinamento.CommandArgument = sortExpression Then

                        If ViewState("SortDirection").ToString = "DESC" Then
                            ImageButtonOrdinamento.ImageUrl = "~/images/frgiu.gif"
                        Else
                            ImageButtonOrdinamento.ImageUrl = "~/images/frsu.gif"
                        End If

                    End If
               End If

                ' ##########  Creo il controllo Label
                Dim labelNomeColonna As New Label
                Dim tableOrd As New Table()
                Dim tableRowOrd As New TableRow()
                Dim tableCell0 = New TableCell()
                Dim tableCell1 As New TableCell

                labelNomeColonna.Text = nomecolonna + " "
                labelNomeColonna.Height = 9

                tableCell0.Controls.Add(labelNomeColonna)

                tableRowOrd.Cells.Add(tableCell0)

                tableCell1.Controls.Add(ImageButtonOrdinamento)
                tableRowOrd.Cells.Add(tableCell1)
                tableOrd.Rows.Add(tableRowOrd)

                ' ##########  cancello il controllo linkbutton dalla cella
                e.Row.Cells(I).Controls.Remove(linkbuttonordinamento)

                ' ########## Aggiungo il nuovo controllo
                e.Row.Cells(I).Controls.Add(tableOrd)
            Next
        End If

    End Sub



questa che segue è la funzione incriminata
il codice viene attivato solo se disattivo la funzione gv_rowcreated
altrimenti sembra che viene ignorata.

Sub GridView1_Sorting(ByVal sender As Object, ByVal e As GridViewSortEventArgs)
        Dim Sorte As String = ""
        Dim Sortd As String = ""

        If ViewState("SortEspression") IsNot Nothing Then
            Sorte = ViewState("SortExpression").ToString
            Sortd = ViewState("SortDirection").ToString

            If Sorte = e.SortExpression.ToString Then
                Beep()
                ViewState("SortDirection") = ChangeDirection(Sortd)
            Else
                ViewState("SortExpression") = e.SortExpression
                ViewState("SortDirection") = "ASC"
            End If
        Else
            ViewState("SortExpression") = e.SortExpression
            ViewState("SortDirection") = "ASC"

        End If

    End Sub



questa funzione è richiamata da GridView1_Sorting per cambiare la direzione del sorting

Function ChangeDirection(ByVal oldDirection As String) As String
        Dim newDirection As String = ""
        Select Case oldDirection
            Case "ASC"
                newDirection = "DESC"
            Case Else
                newDirection = "ASC"
        End Select
        Return newDirection
    End Function
49 messaggi dal 29 dicembre 2003
problema risolto.. ho trovato un codice piu' semplice

grazie a tutti

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
In primo piano

I più letti di oggi

Media
In evidenza
MISC