OnRowDeleting viene scatenato due volte in un WebSite
Può capitare in un progetto VB.NET di tipo WebSite che un evento venga scatenato due volte (onrowdeleting occurs twice).
Normalmente questo comportamento è dovuto al fatto che l'evento è stato dichiarato nella pagina aspx
ed anche nel codice associato alla pagina (aspx.vb) tramite la keywords Handles
Questo può accadere quando si dichiara l'evento nella pagina (OnRowDeleting="GridView1_RowDeleting") e successivamente si fa doppio click sull'evento nella scheda delle proprietà dell'oggetto. In questo modo Visual Studio aggiunge, a livello di codice, il gestore dell'evento (Handles GridView1.RowDeleting).
Per risolvere il problema basta eliminare l'associazione a livello di codice (Handles GridView1.RowDeleting) e lasciare la dichiarazione nella pagina (OnRowDeleting="GridView1_RowDeleting").
Stesso discorso per qualsiasi altro evento gestito nella pagina.
I progetti di tipo WebApplication in VB.NET non hanno questo problema e generano, correttamente, l'evento solo una volta. Anche i progetti C# sia WebSite che WebApplication non presentano il problema.
Normalmente questo comportamento è dovuto al fatto che l'evento è stato dichiarato nella pagina aspx
XML
<asp:GridView ID="GridView1" runat="server"
OnRowDeleting="GridView1_RowDeleting"
...
/>
Visual Basic .NET
Protected Sub GridView1_RowDeleting(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) _
Handles GridView1.RowDeleting
...
Per risolvere il problema basta eliminare l'associazione a livello di codice (Handles GridView1.RowDeleting) e lasciare la dichiarazione nella pagina (OnRowDeleting="GridView1_RowDeleting").
Stesso discorso per qualsiasi altro evento gestito nella pagina.
I progetti di tipo WebApplication in VB.NET non hanno questo problema e generano, correttamente, l'evento solo una volta. Anche i progetti C# sia WebSite che WebApplication non presentano il problema.