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

Я пишу веб-сайт в Visual Studio, что-то вроде онлайн-библиотеки.У меня есть GridView на первой странице, которая представляет все книги, доступные из источника данных, и некоторые другие свойства, также содержащиеся в источнике данных.GridView содержит флажки, и пользователь может выбрать, какие книги он хочет заказать, установив флажок.У меня вопрос: как я могу использовать данные в выбранных строках, список книг с их свойствами и показать этот список на другой странице, чтобы пользователь мог узнать, какие элементы он выбрал?

Iпопытался с циклом for на FirstPage:

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

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

1 Ответ

0 голосов
/ 28 сентября 2011

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

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

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

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...