Как я могу использовать данные в выбранных строках в GridView и показать этот список на другой странице?

#c# #.net #visual-studio-2010

#c# #.net #visual-studio-2010

Вопрос:

Я пишу веб-сайт в Visual Studio, что-то вроде онлайн-библиотеки. На первой странице у меня есть 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 < 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();
  

но это не сработало. Любая помощь? Заранее благодарю вас.

Комментарии:

1. Да, я делаю. Я сделал то, что предложил другой комментатор, и я получаю ошибку Ошибка источника: Строка 81: amp; nbsp; amp;nbsp; </strong> </p> Строка 82: <p> Строка 83:Строка 84: DataKeyNames =»ID» DataSourceID=»LibrarySqlDataSource» Строка 85: ViewStateMode =»Enabled» AllowPaging =»True» Width =»485px» CellPadding =»4″ Возможно, у вас есть какие-либо комментарии по этому поводу?

2. Информация, которую вы предоставляете в комментарии, должна перейти к другому вопросу. Ссылка на этот вопрос, чтобы другие могли следить за тем, что происходит, и что привело вас к тому, что вы сейчас находитесь.

Ответ №1:

вы можете использовать сеанс для сохранения выбранных идентификаторов

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

со второй страницы вы можете получить доступ к сеансу и загрузить эти идентификаторы в grid

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

Комментарии:

1. Спасибо за помощь. Однако я получаю сообщение об ошибке: