2009-06-23 5 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); 
관련 문제