2009-06-23 23 views
1

Ich bin versucht, das Löschen einer Zeile für meine Gridview wie dies zu verhindern:GridView1_RowDeleting() wird nicht aufgerufen?

void GridView1_RowDeleting(Object sender, GridViewDeleteEventArgs e) 
    { 

     if (GridView1.Rows[e.RowIndex].Cells[1].ToString() == "root") 
     { 
      e.Cancel = true; 
     } 
} 

Aber es funktioniert nicht, habe ich einen Haltepunkt in da, aber es hört nie auf Ich glaube nicht, das Ereignis erfasst wird durch diese Funktion wie MSDN es gesagt hätte? Hier

ist das Gridview:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
     CellPadding="4" DataKeyNames="id" DataSourceID="sqlWorkFlowItems" 
     ForeColor="#333333" GridLines="None"> 
     <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> 
     <Columns> 
      <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" /> 
      <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" 
       ReadOnly="True" SortExpression="id" Visible="False" /> 
      <asp:BoundField DataField="name" HeaderText="name" SortExpression="name" /> 
      <asp:BoundField DataField="link" HeaderText="link" SortExpression="link" /> 
      <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" 
       ReadOnly="True" SortExpression="id" Visible="False" /> 
      <asp:TemplateField HeaderText="parent" SortExpression="parent"> 
       <EditItemTemplate> 
        <asp:DropDownList ID="cboParent" SelectedValue='<%# Bind("parent") %>' DataSourceID="sqlWorkFlowItems" 
        DataTextField="name" DataValueField="id" runat="server" /> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:DropDownList ID="cboParent" SelectedValue='<%# Bind("parent") %>' DataSourceID="sqlWorkFlowItems" 
        DataTextField="name" DataValueField="id" runat="server" Enabled="false" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="company" SortExpression="company"> 
       <EditItemTemplate> 
        <asp:Label ID="Label2" runat="server" Text='<%# Bind("company") %>'></asp:Label> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label2" runat="server" Text='<%# Bind("company") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
     <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> 
     <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> 
     <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
     <EditRowStyle BackColor="#999999" /> 
     <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
    </asp:GridView> 

EDIT:

auch versucht, diese zu Page_Load Funktion ohne Erfolg:

GridView1.RowDeleting = new GridViewDeleteEventHandler(this.GridView1_RowDeleting); 

Antwort

2

Sie können dies deklarativ tun:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
     CellPadding="4" DataKeyNames="id" DataSourceID="sqlWorkFlowItems" 
     ForeColor="#333333" GridLines="None" 
     OnRowDeleting="GridView1_RowDeleting"> 

Oder in Code (ich glaube, Sie haben das + =) einfach verpasst:

GridView1.RowDeleting += new GridViewDeleteEventHandler(GridView1_RowDeleting);