Таким образом, прежде чем я попробовал пользовательскую gridview подкачку страниц через ObjectDataSource... Я думаю, что прочитал каждое учебное руководство, которое, как известно человеку только, было уверено, что я получил его. Это не было похоже на аэрокосмические исследования.
Я установил AllowPaging = Верный на моем gridview.
Я указал PageSize = "10" на моем gridview.
Я установил EnablePaging = "Верный" на ObjectDataSource.
Я добавил 2 детских коляски подкачки страниц (maximumRows и startRowIndex) к избранному методу моего бизнес-объекта.
Я создал аналогичный метод "количества" с той же подписью как избранный метод.
Единственная проблема, которую я, кажется, имею, во время выполнения... ObjectDataSource предоставляет мой бизнес-объект maximumRows значение-1, и я не могу ни за что в жизни выяснить почему. Я искал в конец сети кого-либо еще имеющего эту проблему, и по-видимому я - единственный. Параметр StartRowIndex, кажется, работает просто великолепно.
Какие-либо идеи?
Вы не одиноки. У меня такая же проблема. Моя установка немного отличается. В моем случае я использую ListView вместо GridView Control. У меня есть 2 страницы, одна использует ListView и DataPager, а другая - ListView и Custom Navigation Control (по сути, это то же самое, что и DataPager, только с другой разметкой). Обе страницы используют один и тот же BLL метод и устанавливают maximumRow и startRow одинаковым образом. В основном скопированный и вставленный код.
Установка ListView-DataPager работает нормально, параметры в BLL Method установлены правильно. Страница без 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 означает просто "все оставшиеся записи". Так что это не ошибка, а значение по умолчанию.
Это мое первое сообщение здесь, надеюсь, я не сделал ничего неправильного, поскольку это не совсем решение. Также я не хочу вмешиваться, но буду благодарен за любую дополнительную информацию... эта проблема не дает мне покоя.
Это решение работает.
Я также столкнулся с той же проблемой.
Если сделать EnablePaging = "true", то StartRowIndex устанавливался на размер страницы.
Если EnablePaging = "false", то MaximumRows устанавливался равным нулю.
Однако если вы установите
e.Arguments.StartRowIndex = m_startRowIndex;
e.Arguments.MaximumRows = m_PageSize;
Тогда он работает правильно, однако это обходной путь