2009-06-23 8 views
1

Je cherche à empêcher la suppression d'une ligne pour mon GridView comme ceci:GridView1_RowDeleting() n'est pas appelé?

void GridView1_RowDeleting(Object sender, GridViewDeleteEventArgs e) 
    { 

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

Mais cela ne fonctionne pas, je mets un point d'arrêt là-dedans, mais il ne cesse jamais je ne pense pas que l'événement est capturé par cette fonction comme MSDN a dit qu'il le ferait?

Voici le 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:

également essayé d'ajouter ceci à la fonction Page_Load sans résultat:

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

Répondre

2

Vous pouvez le faire déclarative:

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

Ou dans le code (je pense que vous venez de manquer le + =):

GridView1.RowDeleting += new GridViewDeleteEventHandler(GridView1_RowDeleting); 
Questions connexes