2017-04-04 40 views
0

我有一个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(); 
    } 
+0

添加您使用的代码 –

+0

@SruthiSuresh done – lenny

+0

该文档说是,触发RowDeleting事件:https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview。 rowcommand(v = vs.110).aspx要禁用此行为,显而易见的解决方案是将命令名称更改为某个预定义名称以外的名称。 – Joe

回答

1

是的,GridView触发RowDeleting事件,因为按钮的CommandName删除。您必须更改CommandName,并且必须从GridView控件中删除OnRowDeleting="gv_uebersicht_RowDeleting"。它不会抛出任何错误。

+0

有没有办法禁用此功能?我不希望'RowDeleting'事件被解雇,只是因为我的一个命令被称为'delete' – lenny

+0

您可以通过从'GridView'控件中移除'OnRowDeleting ='gv_uebersicht_RowDeleting''来检查事件代码,并从' .cs'文件? – csharpbd

+0

我只是继续前进,并将'CommandName'改为'“del”,并在'RowCommand'事件中将其更改为'“delete”'。它是愚蠢的,你不能关闭这个功能 – lenny