【发布时间】:2017-04-04 09:43:30
【问题描述】:
我有一个带有 ItemTemplate 按钮的 GridView,它使用 RowCommand 函数来执行 SQL。请注意,其中一个具有 CommandName "delete" 来评估按下了哪个按钮。这会导致 GridView 触发 RowDeleting 事件吗?我假设 ASP .Net 认为我创建了一个自定义删除按钮,因此触发了该事件。我不使用该事件,它在尝试触发它时会引发错误,因为它不存在。有没有办法禁用它?
网格视图
<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();
}
【问题讨论】:
-
添加你使用的代码
-
@SruthiSuresh 完成
-
文档说是的,触发了 RowDeleting 事件:msdn.microsoft.com/en-us/library/… 要禁用此行为,显而易见的解决方案是将命令名称更改为预定义名称之一以外的名称。
-
@Joe 我不想更改
CommandName,有没有办法禁止GridView这样做? -
@lenny 您可以处理
RowDeleting事件并将 GridViewDeleteEventArgs.Cancel 设置为 true 以阻止该行被删除。