#asp.net #gridview
#asp.net #просмотр сетки
Вопрос:
У меня есть представление в виде сетки, в котором 10 строк. Я установил paging = true
и pageSize = 2
Теперь, когда я пытаюсь перейти по странице по указанной ниже ссылке, например 1, 2, 3, я получаю сообщение об ошибке, что-то вроде события необходимости pageIndexChanged
.
Я добавил это событие, но не понимаю, какой код мне следует добавить к этому событию, чтобы перейти к следующей странице, сохраняя состояние на каждой странице?
Пожалуйста, дайте мне знать
Ответ №1:
Все, что вам нужно сделать, это установить pageIndex для GridView на новую страницу и повторно привязать элемент управления.
protected void gridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gridView1.PageIndex = e.NewPageIndex;
BindGrid(); // this is whatever method you call to bind your data.
}
Редактировать:
У вас уже должен быть обработчик событий для привязанного к данным события GridView:
protected void GridView1_DataBound(object sender, EventArgs e)
{
// lots of code here to do stuff with bound data.
}
Вместо «большого количества кода» у вас есть это:
protected void GridView1_DataBound(object sender, EventArgs e)
{
BindGrid();
}
Следовательно, при событии PageIndexChanging все, что вы делаете, это повторно привязываете данные (вызывая ту же логику для события DataBound).
Имеет смысл?
Комментарии:
1. GridView1.DataSource = dt; GridView1.DataBind(); это код, который я пишу, чтобы привязать свою сетку данных при нажатии какой-либо кнопки. итак, я должен это исправить и как, вы имеете в виду, что я должен снова выполнить операцию с базой данных здесь, используя идентификатор dt в событии нажатия кнопки и недоступный снаружи
2. Реорганизуйте свой код таким образом, чтобы сделать dt доступным из обработчика событий PageIndexChanging
3. Как это сделать, чтобы я мог снова получить тот же dt для привязки, я действительно новичок в этом, пожалуйста, предложите мне структуру, которая у меня должна быть. потому что у меня есть dt при нажатии кнопки. должен ли я объявлять dt на стороне out глобально, но при обратной отправке это приведет к созданию таблицы данных emapty, что мне делать?
4. должен ли я использовать viewstate или какой альтернативный вариант вы предлагаете
5. я использовал viewstate, но проблема в том, что столбец с установленным флажком в навигации становится непроверенным, что теперь делать, как это решить