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
nel code behind la sub richiamata fa questocodice:<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>
Il comportamento strano è che cliccando sulla prima colonna entro nella sub però viene eseguito due volte il giro della sub perchè?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
Questo mi crea il problema che non riesco a far fare il sorting in modo alternato.
Cosa mi sfugge?
Grazie.

Rispondi quotando