Подкачка страниц Gridview через ObjectDataSource: Почему maximumRows устанавливает на-1?

Таким образом, прежде чем я попробовал пользовательскую gridview подкачку страниц через ObjectDataSource... Я думаю, что прочитал каждое учебное руководство, которое, как известно человеку только, было уверено, что я получил его. Это не было похоже на аэрокосмические исследования.

Я установил AllowPaging = Верный на моем gridview.

Я указал PageSize = "10" на моем gridview.

Я установил EnablePaging = "Верный" на ObjectDataSource.

Я добавил 2 детских коляски подкачки страниц (maximumRows и startRowIndex) к избранному методу моего бизнес-объекта.

Я создал аналогичный метод "количества" с той же подписью как избранный метод.

Единственная проблема, которую я, кажется, имею, во время выполнения... ObjectDataSource предоставляет мой бизнес-объект maximumRows значение-1, и я не могу ни за что в жизни выяснить почему. Я искал в конец сети кого-либо еще имеющего эту проблему, и по-видимому я - единственный. Параметр StartRowIndex, кажется, работает просто великолепно.

Какие-либо идеи?

7
задан John Saunders 24 May 2010 в 03:29
поделиться

2 ответа

Вы не одиноки. У меня такая же проблема. Моя установка немного отличается. В моем случае я использую 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 означает просто "все оставшиеся записи". Так что это не ошибка, а значение по умолчанию.

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

0
ответ дан 7 December 2019 в 05:18
поделиться

Это решение работает.

Я также столкнулся с той же проблемой.

Если сделать EnablePaging = "true", то StartRowIndex устанавливался на размер страницы.

Если EnablePaging = "false", то MaximumRows устанавливался равным нулю.

Однако если вы установите

e.Arguments.StartRowIndex = m_startRowIndex; 
e.Arguments.MaximumRows = m_PageSize; 

Тогда он работает правильно, однако это обходной путь

0
ответ дан 7 December 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: