2009-06-23 42 views
1

我試圖阻止行刪除我的GridView這樣的:GridView1_RowDeleting()沒有被調用?

void GridView1_RowDeleting(Object sender, GridViewDeleteEventArgs e) 
    { 

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

但它不工作,我把一個斷點在那裏,但它永遠不會停止,我不覺得被捕獲的事件通過這個函數就像MSDN說的那樣?

這裏是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> 

編輯:

也嘗試添加該到Page_Load功能無濟於事:

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

回答

2

可以以聲明方式做到這一點:

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

或在代碼中(我認爲你剛剛錯過了+ =):

GridView1.RowDeleting += new GridViewDeleteEventHandler(GridView1_RowDeleting);