Вы не одиноки. У меня та же проблема. Моя установка немного отличается. В моем случае я использую ListView вместо элемента управления GridView.
Я получил 2 страницы, одна с использованием ListView и DataPager, а другая с использованием ListView и пользовательского элемента управления навигацией (по сути, это то же самое, что DataPager, только другой вывод разметки).
Обе страницы используют один и тот же метод BLL и одинаково устанавливают MaximumRow и startRow. В основном скопируйте и вставьте код.
Настройка ListView-DataPager работает нормально, параметры установлены правильно в методе BLL. Страница без DataPager не работает. Но DataPager не может быть причиной. Оба (DataPager и мой пользовательский элемент управления) создают одинаковые ожидаемые значения, которые передаются в коллекцию параметров ObjectDataSource.
Самое запутанное, что SelectCountMethod, который вызывается после SelectMethod, получает правильные параметры в обеих версиях!
Мне удалось обойти эту проблему, установив значения параметров в событии OnSelecting ObjectDataSource:
protected void ObjectDataSource_MyListing_OnSelecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
e.Arguments.StartRowIndex = m_startRowIndex;
e.Arguments.MaximumRows = m_PageSize;
}
Я где-то читал, что значение -1 для MaximumRows просто означает «все оставшиеся записи». Так что это будет не ошибка, а значение по умолчанию.
Это мой первый пост здесь, надеюсь, я не сделал ничего плохого, так как это не совсем решение. Кроме того, я не хочу угонять, но я был бы признателен за любую дополнительную информацию ... эта проблема беспокоит меня.