问题描述:页面上有一个gridview和一个按钮,我在gridview加了一列checkbox,现在想实现点击按钮,将gridview里checkbox选中行的ID传给另一个页面 protected void Button_Print_Click(object sender, EventArgs e)
{
        sqlcon = new SqlConnection(strCon);
        SqlCommand sqlcom;
        for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
        {
            CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
            if (cbox.Checked == true)
            {
                string sqlstr = "Select id from MPSHZFORM1_Equip where id='" + GridView1.DataKeys[i].Value + "'";
               
            }
        }
}请问代码应该怎样补充一下,ID可能是一个集合,用什么容器传和接收?

解决方案 »

  1.   

    get post都可以
    或者用session cookie
      

  2.   

    在本页面中:Session["id"]=GridView1.DataKeys[i].Value;//将ID存入Session
    在另一页面中:string id=Session["id"].ToString();//将Session中的ID取出
      

  3.   

    Response.Redirect(“xxxx.aspx?id=”+GridView1.DataKeys[i].Value);
      

  4.   


    string str;
    for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
            {
                CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
                if (cbox.Checked == true)
                {
                     str &= GridView1.DataKeys[i].Value + "|" ;
                }
            }resoponse.redrict("xxx.aspx?id = str");
    string[] str = Request.QueryString("id").Split('|'); 
      

  5.   

    resoponse.redrict("xxx.aspx?id = 你查出来的id");接收页 string id= Request.QueryString["id"]\或是Session也行
      

  6.   

    可以传递一个string类型的,然后遍历读取id...        string _ids= string.Empty; 
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                CheckBox cbUser = (CheckBox)GridView1.Rows[i].FindControl("cbUser");
                if (cbUser.Checked == true)
                {
                          _ids+ = GridView1.Rows[i].Cells[1].Text + ",";
                }
            }
            _ids = _ids.TrimEnd(',');        Response.Redirect(“abc.aspx?id=”+_ids);
      

  7.   

    我觉得拼接选中的值比较合理,通过 | 拼接,然后传过去后 spilt截取
      

  8.   

    在前台gridview中存  DatakeyNames="id列名"
    后台
    用 Gridview1.Datakyes[e.rowindex].values["id"].value; //取得你点击行的ID
      

  9.   

    做个例子:
    GridViewCheckBoxForm.aspx  <script type="text/javascript" src="../JS/jquery-1.4.4.js"></script>
        <script type="text/javascript">
            var checkID = "";
            $(function() {
                $("input[type='button'][value='value']").click(function() {
                    checkID = "";
                    $("#Gridview1 input[type='checkbox']:checked").each(function() {
                        checkID += $(this).parent().next().html();
                        checkID += ",";
                    });
                    checkID = checkID.substring(0, checkID.length - 1);
                    window.open("ReciveCheckBoxValueForm.aspx");
                });
            });
        </script>
    <div>
        <asp:gridview ID="Gridview1" runat="server" AutoGenerateColumns="False" 
                DataKeyNames="ID" DataSourceID="SqlDataSource1">
            <Columns>
           <asp:TemplateField>
              <ItemTemplate>
                  <asp:CheckBox ID="CheckBox1" runat="server" />
              </ItemTemplate>
           </asp:TemplateField>
                <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
                    ReadOnly="True" SortExpression="ID" />
                <asp:BoundField DataField="NAME" HeaderText="NAME" SortExpression="NAME" />
            </Columns>
            </asp:gridview>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:TestDBConnectionString %>" 
                SelectCommand="SELECT [ID], [NAME] FROM [Test]"></asp:SqlDataSource>
                <input type=button value='value' />
        </div>
    ReciveCheckBoxValueForm.aspx <div>
            <input type=text />
        </div>
     <script src="../JS/jquery-1.4.4.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(function() {
                $("form#form1 div").eq(1).find("input").val(window.opener.checkID);
            });
        </script>
      

  10.   

    Response.Write("<script>window.open('xxx.aspx?id="+str+"','_blank','');</script>");string[] str = Request.QueryString("id").Split('|');