Пейджинг сетки данных: недопустимое значение CurrentPageIndex. Должно быть> = 0 - PullRequest
3 голосов
/ 20 марта 2009

У меня есть сетка данных с включенной подкачкой. Я отображаю результаты в сетке данных на основе условия фильтрации. Я отфильтровал данные, и теперь у него 2 страницы. когда я иду на 2-ю страницу. и я делаю функцию seacrhing еще раз, чтобы сузить результаты. Затем я получаю сообщение об ошибке типа «Неверное значение CurrentPageIndex. Это должно быть> = 0 и

Ответы [ 5 ]

5 голосов
/ 20 марта 2009

При внесении определенных изменений необходимо выполнить сброс на страницу 1. Это включает в себя фильтрацию изменений. Практически каждый раз, когда вы меняете количество строк, которые могут быть доступны для вашей сетки, возвращайтесь на страницу 1.

1 голос
/ 22 марта 2012

У меня есть сетка данных с включенной подкачкой. Я отображаю результаты в сетке данных на основе условия фильтрации. Я отфильтровал данные, и теперь у него 2 страницы. Когда я перехожу на 2-ю страницу и снова выполняю функцию поиска, чтобы сузить результаты. Тогда я получаю сообщение об ошибке типа

"Неверное значение CurrentPageIndex. Оно должно быть> = 0 и < PageCount + datagrid paging "

Я уверен, что второй поиск даст только меньшее количество страниц, чем предыдущий. Как решить эту проблему ? Ошибка показывает:

Значение CurrentPageIndex. Это должно быть> = 0 и

Я решил проблему

protected void btnSearchLibrary_Click(object sender, EventArgs e)
{
    if(!String.IsNullOrEmpty(txtSearchLibraryNo.Text.Trim()))
    oBookReceiptDTO.LibraryCardNo = txtSearchLibraryNo.Text.Trim();
    gvBooksReceiptList.CurrentPageIndex = 0;
    FillGridViewBookReceiptList(oBookReceiptDTO);
}

ПРИМЕЧАНИЕ: gvBooksReceiptList.CurrentPageIndex = 0; это строка, которую я использовал для решения проблемы.

0 голосов
/ 28 августа 2013

В моем случае я всегда применял строку, сбрасывающую текущий индекс страницы, каждый раз, когда происходит изменение данных, загружаемых в элемент управления Data Grid.

DataGrid.CurrentPageIndex = 0

DataGrid.DataSource = Набор данных / Набор данных

DataGrid.DataBind ()

Это связано с тем, что не все время исключение, возникающее при связывании источника данных с сеткой данных, будет приводить к несовместимому количеству страниц.

0 голосов
/ 21 декабря 2012

Вы можете перейти на первую страницу или поймать исключение и перейти на любую страницу, которая вам нравится. Если вы удаляете одну запись с последней страницы, вы можете перейти к предыдущей.

 try
    {
       grid.DataSource = dao.PopulateGrid();
       grid.DataBind();
    }
     catch
    {
     if (grid.CurrentPageIndex >= grid.PageCount)
      {
        grid.CurrentPageIndex -= 1;
        grid.DataSource = dao.PopulateGrid();
        grid.DataBind();
      }
    }
0 голосов
/ 05 ноября 2010

Другое предложение состоит в том, чтобы сбрасывать CurrentPageIndex только тогда, когда PageCount изменился и вызывает HttpException. Фрагмент кода основан на примере Ле Смита .

    Try
        dataGrid1.DataBind()
    Catch
        ' We possibly don't have the correct PageCount.
        dataGrid1.CurrentPageIndex = 0
        dataGrid1.DataBind()
    End Try
...