#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. Спасибо за помощь. Однако я получаю сообщение об ошибке: