定义以这样的一个GridView, cbSelect用来标识是否选中
<asp:GridView ID="GridView1" runat="server" 
                        onrowdatabound="GridView1_RowDataBound" 
                        DataKeyNames="fengineeringpartcode,frequency" AllowPaging="True" 
                        EnableViewState="False" onpageindexchanging="GridView1_PageIndexChanging" 
                        PageSize="2" onrowcommand="GridView1_RowCommand" 
                        >
                        <Columns>
                            <asp:TemplateField>
                              <ItemTemplate>
                                <asp:CheckBox ID="cbSelect" runat="server" />                                
                              </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>                        
                        <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
                    </asp:GridView>
现在想点击窗口的确定按钮获取用户选择了哪几行, 每行的值是多少
protected void btn_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < this.GridView1.Rows.Count; i++)  //这里永远为0
            {
                CheckBox cbx = ((CheckBox)GridView1.Rows[i].FindControl("cbSelect"));
                if (cbx.Checked)
                {
                    //怎么样获取选择了哪几行,每行的值是多少?
                }
}

解决方案 »

  1.   

     protected void btn_Click(object sender, EventArgs e)
        {
            string str = string.Empty;
            for (int i = 0; i < this.GridView1.Rows.Count; i++) //你页面 Gridview绑定数据了么 page_load里绑定 if(!ispostback)
            {
                CheckBox cbx = ((CheckBox)GridView1.Rows[i].FindControl("cbSelect"));
                if (cbx.Checked)
                {
                    //怎么样获取选择了哪几行,每行的值是多少?
                    str += cbx.Text + ",";
                }
            }
            //用,分割的一串 也可以添加到数组里 看你自己了。
        }
      

  2.   

    foreach (GridViewRow _gvr in this.GridView1.Rows)循环gridview中每一行
    {
        //获取模板列中的控件从而得到控件值
        //如果有其他的列,比如lable绑定了用户名取名为lb_user
        //那么Lable lbUser=gvr FindControl("lb_user") as Lable 来取值
        CheckBox cbx = gvr FindControl("cbSelect") as CheckBox;
        if (cbx!=null&&cbx.Checked)
        {
           str += cbx.Text + ",";
        }
    }
      

  3.   

    foreach (GridViewRow _gvr in this.GridView1.Rows)循环gridview中每一行
    {
      //获取模板列中的控件从而得到控件值
      //如果有其他的列,比如lable绑定了用户名取名为lb_user
      //那么Lable lbUser=_gvr.FindControl("lb_user") as Lable 来取值
      CheckBox cbx = _gvr.FindControl("cbSelect") as CheckBox;
      if (cbx!=null&&cbx.Checked)
      {
          str += cbx.Text + ",";
      }
    }
    在回复框里,打错了几个