2009-10-30 9 views
10

Ich habe eine GridView. Mein GridView hat eine Spalte, die eine Spalte "Optionen" enthält. Diese Spalte enthält die traditionellen CommandField-Optionen (Bearbeiten, Löschen usw.). Ich habe das Code-Setup zu funktionieren, wenn ein CommandField verwendet wird. Allerdings muss ich einige benutzerdefinierte Formatierung durchführen, so dass ich das CommandField zu einem TemplateField konvertieren musste.ASP.NET + GridView + CommandField als TemplateField

Meine Frage ist, wie trigger ich die OnRowCommand, OnRowEditing, OnRowDeleting und OnRowUpdating Ereignisse aus den verschiedenen LinkButton-Elementen in meinem TemplateField?

Vielen Dank!

Antwort

22

Sie müssen lediglich die CommandName-Eigenschaft des LinkButtons innerhalb Ihrer Vorlagenspalte auf "Bearbeiten" für die Bearbeitung, "Löschen" zum Löschen und "Aktualisieren" für die Aktualisierung setzen. Dies löst die Ereignisse GridView RowEditing, RowDeleting und RowUpdating aus. Um das RowCommand-Ereignis auszulösen, müssen Sie die OnRowCommand-Eigenschaft Ihres GridView-Steuerelements festlegen.

<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand" 
    OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" 
    OnRowUpdating="GridView1_RowUpdating"> 
<Columns> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <!--To fire the OnRowEditing event.--> 
      <asp:LinkButton ID="lbEdit" runat="server" CommandName="Edit" 
       Text="Edit"> 
      </asp:LinkButton> 
      <!--To fire the OnRowDeleting event.--> 
      <asp:LinkButton ID="lbDelete" runat="server" CommandName="Delete" 
       Text="Delete"> 
      </asp:LinkButton> 
      <!--To fire the OnRowUpdating event.--> 
      <asp:LinkButton ID="lbUpdate" runat="server" CommandName="Update" 
       Text="Update"> 
      </asp:LinkButton> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns>  
</asp:GridView> 
12

Ich hatte das gleiche Problem.

Für bearbeiten, habe ich folgendes:

 <asp:TemplateField ShowHeader="False"> 
      <ItemTemplate> 
       <asp:LinkButton ID="EditButton" 
           runat="server" 
           CommandName="Edit" 
           Text="Edit" /> 
      </ItemTemplate> 
      <EditItemTemplate> 
       <asp:LinkButton ID="UpdateButton" 
           runat="server" 
           CommandName="Update" 
           Text="Update" />&nbsp; 
       <asp:LinkButton ID="Cancel" 
           runat="server" 
           CommandName="Cancel" 
           Text="Cancel" /> 
      </EditItemTemplate> 
     </asp:TemplateField> 

Dies ermöglicht die Aus-/Einblenden des Updates und Tasten abzubrechen.

Was löschen, habe ich die folgenden:

<asp:TemplateField> 
     <ItemTemplate> 
      <asp:LinkButton ID="DeleteButton" 
          Text="Delete" 
          CommandName="Delete" 
          runat="server" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
1

Klick auf Spalten in Eigenschaften, fügen CommandField(Edit,update,Cancel) und klicken Sie auf die Schaltfläche „Konvertieren dieses Feld Template“

Swich und automatisch Quelle gehen füge einen Code hinzu.