无法删除多个网格视图记录

时间:2012-07-21 21:58:24

标签: c# asp.net gridview checkbox

我正在尝试删除多个网格视图记录。我尝试如下所示。

       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”。为什么复选框控件总是显示为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>

1 个答案:

答案 0 :(得分:0)

我和Tim在一起,听起来你正在Page_Load内加载你的gridview,这很好。但在您的情况下,您需要确保您的gridview加载代码如下所示:

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

这会阻止您在单击删除按钮时重新加载gridview(并且会丢失选中的框)