Salve ho un comportamento strano dell'evento Sorting di un gridview. Mi spiego:
Ho un Gridview popolato da codice e che creo così nella pagina aspx ne riporto l'estratto
codice:
 <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" DataKeyNames="IdRicorso"
        GridLines="None" AutoGenerateColumns="False"
        OnSorting="GridView1_Sorting"
        PageSize="15"
        AllowPaging="true"
        AllowSorting="true">
        <RowStyle BackColor="#EFF3FB" />
        <Columns>
        <asp:CommandField  ShowSelectButton="True" ButtonType="Image" 
                     SelectText="visualizza" CancelText=""  CausesValidation="False" 
                      InsertText="" InsertVisible="False" 
                     SelectImageUrl="~/img/visualizza.png"  ShowCancelButton="False"     >
                 <ItemStyle Font-Names="Verdana"  HorizontalAlign="Center" VerticalAlign="Top" 
                     Wrap="True" />
                 </asp:CommandField>
                 <asp:CommandField ButtonType="Image" DeleteText="Modifica" ShowDeleteButton="True" 
                     CancelText="" DeleteImageUrl="~/img/edit.png" EditText="" >
                 <ItemStyle Font-Size="Medium" HorizontalAlign="Center" VerticalAlign="Top" 
                     Wrap="True" />
                 </asp:CommandField>
            <asp:BoundField DataField="IdRicorso" HeaderText="Identificativo Ricorso" SortExpression="IdRicorso" />
            <asp:BoundField DataField="IdProtDocway" HeaderText="Numero Docway"  SortExpression="IdProtDocway" />
            <asp:BoundField DataField="NominativoRicorrente" HeaderText="Ricorrente" SortExpression="NominativoRicorrente" />
            <asp:BoundField DataField="CfRicorrente" HeaderText="C.F./P.IVA" SortExpression="CfRicorrente" />
            <asp:BoundField DataField="DescrTipoAtto" HeaderText="Tipo Atto" SortExpression="DescrTipoAtto" />
            <asp:BoundField DataField="DescAutGiud" HeaderText="Autorità Giudiziaria" SortExpression="DescAutGiud" />
            <asp:BoundField DataField="CompTerritoriale" HeaderText="Competenza" SortExpression="CompTerritoriale" />
            <asp:BoundField DataField="ValoreControversia" HeaderText="Valore" SortExpression="ValoreControversia" />
            <asp:BoundField DataField="DescrStatoLav" HeaderText="Stato Lavorazione" SortExpression="DescrStatoLav" />
        </Columns>
        <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
        <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
        <EditRowStyle BackColor="#2461BF" />
        <AlternatingRowStyle BackColor="White" />
    </asp:GridView>
nel code behind la sub richiamata fa questo
codice:
   Protected Sub GridView1_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles GridView1.Sorting
        Dim Caso1 As String = e.SortExpression
        Select Case Caso1
            Case "IdRicorso"
                Select Case str_ordine
                    Case "DESC"
                        str_ordine = "ASC"
                        str_Utente = Request.ServerVariables("LOGON_USER")
                        str_Utente = Replace(str_Utente, "ESATTORIA\", "")
                        Dim myCommand2 As New OleDbDataAdapter("SELECT TbIdRicorso.IdRicorso, TbIdRicorso.IdProtDocway, TabAutGiudiziaria.DescAutGiud, TbIdRicorso.NominativoRicorrente, TbIdRicorso.CFRicorrente, TabTipoAtto.DescrTipoAtto, TbIdRicorso.CompTerritoriale, TbIdRicorso.ValoreControversia, TabStatoLavorazione.DescrStatoLav FROM [ContenziosoEsattoriale].[dbo].[TabAutGiudiziaria] INNER JOIN [ContenziosoEsattoriale].[dbo].[TbIdRicorso] ON [ContenziosoEsattoriale].[dbo].[TabAutGiudiziaria].[IdAutGiud] = [ContenziosoEsattoriale].[dbo].[TbIdRicorso].[IdAutGiud] INNER JOIN [ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso] ON [ContenziosoEsattoriale].[dbo].[TbIdRicorso].[IdRicorso] = [ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[IdRicorso] INNER JOIN [ContenziosoEsattoriale].[dbo].[TabTipoAtto] ON [ContenziosoEsattoriale].[dbo].[TbIdRicorso].[IdTipoAtto] = [ContenziosoEsattoriale].[dbo].[TabTipoAtto].[IdTipoAtto] INNER JOIN [ContenziosoEsattoriale].[dbo].[TabStatoLavorazione] ON [ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[IdStatoLav] = [ContenziosoEsattoriale].[dbo].[TabStatoLavorazione].[IdStatoLav] WHERE ([ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[IdStatoLav] = 1) AND ([ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[IdLavorazione] = 1) AND [ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[IdUtente]  =" & "'" & str_Utente & "'" & " AND [ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[DtChiusura] IS NULL order by TbIdRicorso.IdRicorso DESC", MyConnection2)
                        'Riempi l'oggetto DataSet
                        ds3 = New DataSet()
                        myCommand2.Fill(ds3, "TbIdRicorso")
                        GridView1.DataSource = ds3
                        DataBind()
                    Case "ASC"
                        str_ordine = "DESC"
                        str_Utente = Replace(str_Utente, "ESATTORIA\", "")
                        Dim myCommand2 As New OleDbDataAdapter("SELECT TbIdRicorso.IdRicorso, TbIdRicorso.IdProtDocway, TabAutGiudiziaria.DescAutGiud, TbIdRicorso.NominativoRicorrente, TbIdRicorso.CFRicorrente, TabTipoAtto.DescrTipoAtto, TbIdRicorso.CompTerritoriale, TbIdRicorso.ValoreControversia, TabStatoLavorazione.DescrStatoLav FROM [ContenziosoEsattoriale].[dbo].[TabAutGiudiziaria] INNER JOIN [ContenziosoEsattoriale].[dbo].[TbIdRicorso] ON [ContenziosoEsattoriale].[dbo].[TabAutGiudiziaria].[IdAutGiud] = [ContenziosoEsattoriale].[dbo].[TbIdRicorso].[IdAutGiud] INNER JOIN [ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso] ON [ContenziosoEsattoriale].[dbo].[TbIdRicorso].[IdRicorso] = [ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[IdRicorso] INNER JOIN [ContenziosoEsattoriale].[dbo].[TabTipoAtto] ON [ContenziosoEsattoriale].[dbo].[TbIdRicorso].[IdTipoAtto] = [ContenziosoEsattoriale].[dbo].[TabTipoAtto].[IdTipoAtto] INNER JOIN [ContenziosoEsattoriale].[dbo].[TabStatoLavorazione] ON [ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[IdStatoLav] = [ContenziosoEsattoriale].[dbo].[TabStatoLavorazione].[IdStatoLav] WHERE ([ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[IdStatoLav] = 1) AND ([ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[IdLavorazione] = 1) AND [ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[IdUtente]  =" & "'" & str_Utente & "'" & " AND [ContenziosoEsattoriale].[dbo].[TbLavorazioniRicorso].[DtChiusura] IS NULL order by TbIdRicorso.IdRicorso ASC", MyConnection2)
                        'Riempi l'oggetto DataSet
                        ds3 = New DataSet()
                        myCommand2.Fill(ds3, "TbIdRicorso")
                        GridView1.DataSource = ds3
                        DataBind()
                End Select
        End Select
    End Sub
Il comportamento strano è che cliccando sulla prima colonna entro nella sub però viene eseguito due volte il giro della sub perchè?
Questo mi crea il problema che non riesco a far fare il sorting in modo alternato.
Cosa mi sfugge?
Grazie.