2012-07-21 78 views
0

我想删除多个网格视图记录。我尝试如下所示。无法删除多个网格视图记录

 public void btnDelete_Click(object sender, EventArgs e) 
     { 
      StringCollection orderNumberCollection = new StringCollection(); 
      if (gridOrders.Rows.Count > 0) 
      { 
       foreach (GridViewRow gvrow in gridOrders.Rows) 
        { 
         if (gvrow.RowType == DataControlRowType.DataRow) { 
          CheckBox cbx = (CheckBox)gvrow.Cells[0].FindControl("chkdelete"); 
          Label lblOrderNumner = (Label)gvrow.FindControl("labelOrderNumber"); 
          Label lastName = (Label)gvrow.FindControl("LabelLastName"); 
          if (cbx.Checked && lblOrderNumner != null) 
          { 
           orderNumberCollection.Add(lblOrderNumner.Text); 
          } 
         } 
        } 
      } 
     if (orderNumberCollection.Count > 0) 
     { 
      DeleteMultipleOrders(orderNumberCollection); 
     } 
} 

但总是复选框控件显示“Checked = false”。为什么复选框控件总是显示错误,即使我检查了一些复选框?

这里是我的网格视图代码:

<asp:TemplateField> 
    <HeaderTemplate> 
    <table><tr><td ><asp:CheckBox ID="chkAll" runat="server" /></td><td><asp:Button ID="btnDelete" runat="server" Text="Delete" OnClick="btnDelete_Click" /></td></tr></table> 
    </HeaderTemplate> 
     <ItemTemplate> 
      <asp:CheckBox ID="chkdelete" runat="server" Text='<%# Bind("OrderNumber") %>' Font-Bold="false" /> 
     </ItemTemplate> 

    </asp:TemplateField> 
+0

请显示GridView代码 – HatSoft 2012-07-21 22:03:48

+0

即使在回发中,您是否重新加载GridView?这将导致复选框取消选择。 – 2012-07-21 23:10:08

+0

谢谢蒂姆。你是对的。 – Ranjith 2012-07-22 03:29:51

回答

0

我与蒂姆是这一点,这听起来像你加载从Page_Load内你的GridView,这是罚款。但在你的情况下,你需要确保你的GridView加载代码看起来是这样的:

if(!Page.IsPostBack) 
{ 
    //gridview loading code 
} 

这样可以防止你的GridView被重新加载(和丢失其复选框被选中),当您点击删除按钮