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>
4

1 回答 1

0

我和蒂姆在一起,听起来你是从内部加载你的网格视图Page_Load,这很好。但在您的情况下,您需要确保您的 gridview 加载代码如下所示:

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

当您单击删除按钮时,这可以防止您的 gridview 被重新加载(并丢失选中的框)

于 2012-07-22T01:27:08.100 回答