asp.net подкачка в режиме просмотра сетки

#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, но проблема в том, что столбец с установленным флажком в навигации становится непроверенным, что теперь делать, как это решить