C# 如何使用GridView中选定行中的数据并在另一页上显示该列表?

C# 如何使用GridView中选定行中的数据并在另一页上显示该列表?,c#,.net,visual-studio-2010,C#,.net,Visual Studio 2010,我正在VisualStudio中编写一个网站,类似于一个在线库。我在第一页有一个GridView,它显示了数据源中提供的所有书籍以及数据源中还包含的一些其他属性。GridView包含复选框,用户可以通过复选框选择要订购的书籍。我的问题是如何使用所选行中的数据、书籍列表及其属性,并在另一个页面上显示该列表,以便用户能够知道他选择了哪些项目 我尝试在第一页上使用for循环: for (int i = 0; i < GridView1.Rows.Count; i++)

我正在VisualStudio中编写一个网站,类似于一个在线库。我在第一页有一个GridView,它显示了数据源中提供的所有书籍以及数据源中还包含的一些其他属性。GridView包含复选框,用户可以通过复选框选择要订购的书籍。我的问题是如何使用所选行中的数据、书籍列表及其属性,并在另一个页面上显示该列表,以便用户能够知道他选择了哪些项目

我尝试在第一页上使用for循环:

  for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                int bookID = (int)GridView1.DataKeys[i][0];
                CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl("CheckBox");
                if (cb.Checked)
                {
                    purchaseProductList.Add(bookID);
                    Response.Redirect("SecondPage.aspx?bookID" + i + "=" + bookID); 
                }
       }
for(int i=0;i
然后在第二页:

for (int i = 0; i < 10; i++)
{
    if (Request.QueryString["bookID" + i] != null)
    {
        DataRow row;
        row = dtBooks.NewRow();
        row["ID"] = Request.QueryString["bookID" + i];
        dtBooks.Rows.Add(row);
    }
}
GridView1.DataSource = dtBooks;
GridView1.DataBind();
for(int i=0;i<10;i++)
{
if(Request.QueryString[“bookID”+i]!=null)
{
数据行;
row=dtBooks.NewRow();
行[“ID”]=请求.查询字符串[“bookID”+i];
dtBooks.Rows.Add(row);
}
}
GridView1.DataSource=dtBooks;
GridView1.DataBind();

但它不起作用。有什么帮助吗?提前感谢。

您可以使用会话保留选定的ID

List<string> ids = new List<string>();
for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                int bookID = (int)GridView1.DataKeys[i][0];
                CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl("CheckBox");
                if (cb.Checked)
                {
                    purchaseProductList.Add(bookID);
                    ids.Add(bookID);
                }
       }

Session["Ids"] = ids;

Response.Redirect("SecondPage.aspx"); 
List id=new List();
对于(int i=0;i
从第二页,您可以访问会话并将这些ID加载到网格中

var list = (List<string>)Session["Ids"];

foreach (string id in list)
{

  DataRow row;
  row = dtBooks.NewRow();
  row["ID"] = Request.QueryString["bookID" + id];
  dtBooks.Rows.Add(row);
}
GridView1.DataSource = dtBooks;
GridView1.DataBind();
var list=(list)会话[“id”];
foreach(列表中的字符串id)
{
数据行;
row=dtBooks.NewRow();
行[“ID”]=请求.查询字符串[“bookID”+ID];
dtBooks.Rows.Add(row);
}
GridView1.DataSource=dtBooks;
GridView1.DataBind();

谢谢您的帮助。但是,我收到一条错误消息:是的,我知道。我按照另一位评论者的建议做了,我得到了一个错误源错误:第81行:

第82行:第83行:您在评论中提供的信息应该转到另一个问题。链接到这个问题,以便其他人能够了解正在发生的事情,以及是什么让你走到了现在的地步。