ASP.Net 2.0 - Opakované volání submitu pro Image v CommandFieldu v GridView

MyEgo.cz

home foto blogy mywindows.cz kontakt

ASP.Net 2.0 - Opakované volání submitu pro Image v CommandFieldu v GridView

ASP.Net 2.0, GridView - použití Image v commandFieldu
Při použití image v CommandFieldu se vyskytne bug, který vyvolává opakovaně postback. V mém případě to vyvolávalo opakované mazáni v datovém zdroji. Což mě samozřejmě vyhazovalo chybu. Tento bug je již řešen v MS a dokonce zde existuje několik řešení.
1. použít button typu Link nebo Button, tím ale ztratíte možnost mít obrázek na buttonu
2. použít konstrukci:
[codebox]
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton runat=server id="ImageButton1" CommandName="Delete" ImageUrl="..." CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' OnCommand="ImageButton1_Command" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


protected void ImageButton1_Command(object sender, CommandEventArgs e) {
GridView1.DeleteRow(Int32.Parse(e.CommandArgument.ToString()));
}[/codebox]


Pokud však chcete zachovat obrázek na buttonu, navrhované řešení nefunguje, respektive v mém případě docházelo stále k opětovnému mazaní. Po nějaké době jsem se dopracoval k této podobě, jež je v mém případě funkční.
[codebox]
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton runat=server id="ImageButton1" CommandName="Delete" CausesValidation="false" ImageUrl="..." />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
[/codebox]


Nový komentář