簡體   English   中英

如何使用GridView中選定行中的數據並在另一頁上顯示該列表?

[英]How can I use the data in the selected rows in GridView and show that list on another page?

我正在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();

但這沒用。 有什么幫助嗎? 先感謝您。

您可以使用會話保留選定的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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM