我如何使用GridView中选定行的数据并在另一个页面上显示该列表

本文关键字:另一个 列表 显示 数据 GridView 何使用 | 更新日期: 2023-09-27 18:10:09

我正在Visual Studio中编写一个网站,有点像在线图书馆。我在第一页上有一个GridView,它显示了数据源中可用的所有书籍和数据源中也包含的一些其他属性。GridView包含复选框,用户可以通过选中复选框来选择他想订购的图书。我的问题是,我如何使用所选行中的数据,即具有其属性的图书列表,并在另一个页面上显示该列表,以便用户能够知道他选择了哪些项目?

我尝试在FirstPage上使用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); 
                }
       }

,然后在SecondPage上:

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();

,但它没有工作。任何帮助吗?

我如何使用GridView中选定行的数据并在另一个页面上显示该列表

您可以使用session来保留选定的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"); 
从第二页

,你可以访问会话和加载这些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();