In VB.NET I have a GridView that shows a list of dates and beside each date there's a delete button.
For a reason I don't know, the delete event seems to be fired twice, but I have trouble finding the exact source of the problem.
From this thread : http://bytes.com/forum/threadnav436365-1-10.html, I have set my command button as a template field and call "GridView1.DeleteRow(Int32.Parse(e.CommandArgument .ToString()))" when the button is clicked.
Just above that line, I call a method that logs whatever I want : Logger("[DEBUG] ImageButton1_Command"). In the log file, I see only one entry, as if the block of code is executed only once.
But when I use SqlProfiler to see what's happening at the server's level, I see that my stored procedure is called twice because I have two following line two times :
exec pln_add_exception @date='2008-09-07 00:00:00:000',@planification_id=9
......
My VB code :
Expand|Select|Wrap|Line Numbers
- Protected Sub ImageButton1_Command(ByVal sender As Object, ByVal e As CommandEventArgs)
- Logger("[DEBUG] ImageButton1_Command")
- GridView1.DeleteRow(Int32.Parse(e.CommandArgument.ToString()))
- End Sub
- Private Sub Logger(ByVal message As String)
- Dim logEntry As New LogEntry()
- logEntry.EventId = 100
- logEntry.Priority = 1
- logEntry.Title = "Logging message"
- logEntry.Message = message
- logEntry.Categories.Add("General")
- Logger.Write(logEntry)
- End Sub
Expand|Select|Wrap|Line Numbers
- <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlServerExecutionsPlanifiees" DataKeyNames="date" EnableViewState="False">
- <Columns>
- <asp:TemplateField HeaderText="date" SortExpression="date">
- <ItemTemplate>
- <asp:Label ID="dateLabel" runat="server" Text='<%# Eval("date", "{0:d}") %>' CssClass='<%# "planifDate" & CType(Eval("planifie"), String) %>'></asp:Label>
- </ItemTemplate>
- </asp:TemplateField>
- <asp:TemplateField>
- <ItemTemplate>
- <asp:ImageButton runat="server" id="ImageButton1" CommandName="Delete" ImageUrl="images/delete.png" CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' OnCommand="ImageButton1_Command" />
- </ItemTemplate>
- </asp:TemplateField>
- </Columns>
- </asp:GridView>