aspx code                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:CheckBox ID="CheckBox1" runat="server"  />
                        </ItemTemplate>
                    </asp:TemplateField>
C# code
foreach (GridViewRow row in grid_1.Rows)
        {
            index = (int)grid_1.DataKeys[row.RowIndex].Value;
            bool result = ((CheckBox)row.FindControl("CheckBox1")).Checked;//这里始终为False,但在页面上我已经选择了
.....
}

解决方案 »

  1.   

    GridView是否绑定在了IsPostBack外了。。如果绑定在外面每次回发都会重新绑定,CheckBox就会又变为默认的为选择状态了。
      

  2.   

    foreach (GridViewRow row in grid_1.Rows)
      {
      index = (int)grid_1.DataKeys[row.RowIndex].Value;
      bool result = ((CheckBox)row.cell[0].FindControl("CheckBox1")).Checked;//这里始终为False,但在页面上我已经选择了
    .....
    }
    在row后面加上列,并标识控件所在列,如row.cell[0],试试吧
      

  3.   

    <%@ Page Language="C#" EnableViewState="true"%>
      

  4.   

    全选的例子
    http://dotnet.aspx.cc/article/a8efc285-f0b1-4f8f-8e73-2b7d8724a47c/read.aspx
    http://dotnet.aspx.cc/Exam/GridViewCheckAll.aspx
      

  5.   

    是不是回传啦 IsPostBack  这个东西看好
      

  6.   

    假设点击一个删除按钮,删除选中的数据。foreach(GridView gvr in gvStaff.Rows)
    {
        CheckBox cb = gvr.Cells[0].FindControl("cbItemCheck") as CheckBox;    if(cb.Checked)
        {
            //进行删除操作
        }
    }
      

  7.   

    不好意思,foreach里的应该是GridViewRow。
      

  8.   

    你是不是加上Cell[i]再调用FindControl方法查找试试看啊。