ASP .Net如何识别GridView中的删除按钮?
问题描述:
我有一个GridView与ItemTemplate按钮,使用RowCommand函数来执行SQL。请注意,其中一个命令名称为“delete”来评估哪个按钮被按下。这是否会导致GridView触发RowDeleting事件?我认为ASP .Net认为我创建了一个自定义的删除按钮,因此触发了该事件。我不使用这个事件,并且它试图激发它,因为它不存在。有没有办法禁用?ASP .Net如何识别GridView中的删除按钮?
的GridView
<asp:GridView ID="gv_uebersicht" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" CellPadding="3" ForeColor="Black" GridLines="Vertical" OnRowCommand="gv_uebersicht_RowCommand" OnRowDataBound="gv_uebersicht_RowDataBound" OnRowDeleting="gv_uebersicht_RowDeleting">
<AlternatingRowStyle BackColor="#CCCCCC" />
<Columns>
<asp:BoundField DataField="cockpit_id" HeaderText="cockpitid" />
<asp:BoundField DataField="lieferant" HeaderText="Lieferant" />
<asp:BoundField DataField="datei" HeaderText="Dateiname" />
<asp:BoundField DataField="status" HeaderText="Status" />
<asp:BoundField DataField="erstellzeit" HeaderText="Erstellzeit" />
<asp:BoundField DataField="meldung" HeaderText="Meldung" />
<asp:TemplateField HeaderText="Aktion">
<ItemTemplate>
<asp:Button ID="btn_delete" runat="server" CommandArgument='<%# Eval("cockpit_id") %>' CommandName='<%# "delete" %>' Text="Löschen" Visible='<%# Eval("status_id").ToString() == "2" || Eval("status_id").ToString() == "14" || Eval("status_id").ToString() == "67" || Eval("status_id").ToString() == "68" || Eval("status_id").ToString() == "999" || Eval("status_id").ToString() == "1" || Eval("status_id").ToString() == "69" %>' />
<asp:Button ID="btn_move" runat="server" CommandArgument='<%# Eval("cockpit_id") %>' CommandName='<%# "move" %>' Text="Move" Visible='<%# Eval("status_id").ToString() == "2" || Eval("status_id").ToString() == "14" || Eval("status_id").ToString() == "67" %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="status_id" HeaderText="statusid" />
</Columns>
<FooterStyle BackColor="#CCCCCC" />
<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#F1F1F1" />
<SortedAscendingHeaderStyle BackColor="#808080" />
<SortedDescendingCellStyle BackColor="#CAC9C9" />
<SortedDescendingHeaderStyle BackColor="#383838" />
</asp:GridView>
RowCommand功能
protected void gv_uebersicht_RowCommand(object sender, GridViewCommandEventArgs e)
{
string commandName = e.CommandName;
string commandArgument = e.CommandArgument.ToString();
lbl_msg.Text = "Die Datei " + DatabaseFunctions.GetScalar("SELECT VDB_LS_DATEI FROM VDB_LADESTATUS_COCKPIT WHERE VDB_LS_ID = " + commandArgument) + " wird " + (commandName == "move" ? "gemoved." : "gelöscht.");
ds.UpdateCommand = @"UPDATE VDB_LADESTATUS_COCKPIT
SET VDB_LS_STATUS_ID = 19
WHERE VDB_LS_ID = " + commandArgument;
ds.Update();
ds.InsertCommand = @"DECLARE
V_RC INTEGER;
BEGIN
V_RC := Val.Loeschen_Freigabe_Funktionen(P_Cockpit_ID => " + commandArgument + @",
P_Aktion => '" + commandName + @"');
END; ";
ds.Insert();
fill_gv_uebersicht();
}
答
是的,GridView
触发RowDeleting
事件,因为按钮的CommandName
是删除。您必须更改CommandName
,并且必须从GridView
控件中删除OnRowDeleting="gv_uebersicht_RowDeleting"
。它不会抛出任何错误。
添加您使用的代码 –
@SruthiSuresh done – lenny
该文档说是,触发RowDeleting事件:https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview。 rowcommand(v = vs.110).aspx要禁用此行为,显而易见的解决方案是将命令名称更改为某个预定义名称以外的名称。 – Joe