0

我有一个显示一些数据的网格视图,并添加了一个复选框列,因此我可以删除选择的项目。我的 gridview 布局如下:

<div class = "my_gv">
            <asp:UpdatePanel ID = "update_panel" UpdateMode = "Conditional" runat = "server">
            <ContentTemplate>
                <asp:GridView ID="my_gv" runat="server" AutoGenerateColumns = "False" 
                    GridLines="None" Width="100%" AllowSorting="True" 
                    CssClass="table table-bordered x-condensed cameraDetails" OnRowDataBound = "my_gv_RowDataBound">
                    <Columns>
                        <asp:TemplateField>
                            <HeaderTemplate>
                                <asp:CheckBox ID="SelectAll_ChckBx" runat="server" onclick="selectAllCheckBoxes(this);" meta:resourceKey="SelectAll_ChckBxResource1" />
                            </HeaderTemplate>
                            <ItemTemplate>
                                <asp:CheckBox ID="row_select_checkbox" runat="server" meta:resourceKey="row_select_checkbox_resource" />
                            </ItemTemplate>
                            <HeaderStyle CssClass="CAMheader" />
                            <ItemStyle CssClass="itemEntry chkBx" Width="25px" />
                        </asp:TemplateField>
                        // snip

我处理删除的逻辑执行以下操作:

            foreach (GridViewRow row in my_gv.Rows)
            {
                if (row.RowType != DataControlRowType.DataRow)
                {
                    continue;
                }
                var chkBox = row.FindControl("row_select_checkbox");

                if (chkBox.Checked)
                { 
                    // snip
                }

这对我来说似乎很有意义,但是 .Checked 方法总是返回 false,无论复选框的实际状态如何。我能够从 gridview 访问其他(文本)列就好了。

那么,我做错了什么?如何准确获取复选框状态?谢谢你的帮助

4

1 回答 1

0

我建议创建一个 BindGrid 方法,该方法完成将数据列表绑定到网格然后实际调用 DataBind 的工作,该方法可以选择接受一个列表,所有方法所做的只是绑定到一个 GridView。然后您可以在 page_load 中执行以下操作:

if(!Page.IsPostBack)
{
    BindGrid();
}

如果您需要更新网格(即网格的分页或排序),这使您可以灵活地再次调用绑定逻辑。

于 2013-06-21T19:10:12.300 回答