Как с теми, кто комментировал , Я не могу воспроизвести вашу ошибку. Если параметр Page
в строке запроса является недействительным каким-либо образом (например, параметр отсутствует, число из диапазона, не-числовые данные), то DataPager
игнорирует его и по умолчанию для страницы 1.
Кроме того, образец кода на http://pastebin.com/3Mixy6aT выдает исключение, но по другой причине. В частности, нет LayoutTemplate
с серверным элементом управления, который имеет идентификатор itemPlaceholder
. Я добавил шаблон макета, и пейджер данных работает отлично, независимо от номера страницы, которую вы ему даете. Например:
<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1">
<LayoutTemplate>
<asp:Literal ID="itemPlaceholder" runat="server"></asp:Literal>
<br />
</LayoutTemplate>
<ItemTemplate>
<%#Eval("UserID") %><br />
</ItemTemplate>
</asp:ListView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="Data Source=..."
SelectCommand="SELECT * FROM [Users]">
</asp:SqlDataSource>
Page:
<asp:DataPager ID="DataPager1" runat="server" PagedControlID="ListView1"
PageSize="5" QueryStringField="Page">
<Fields>
<asp:NumericPagerField />
</Fields>
</asp:DataPager>
Следует отметить, что метод SetPageProperties
является членом DataPager
, не ListView
. Интересно, что если вы используете этот метод для установки недопустимого номера строки (например, -1) в коде позади, вы получите ошибку «ошибка вне диапазона». Кроме того, это исключение вызывается, даже если вам не хватает LayoutTemplate
, поэтому он будет маскировать любые проблемы, которые могут возникнуть с вашим шаблоном макета.
Я пришел к выводу, что ваша проблема не имеет ничего общего с параметром Page
в строке запроса. Я рекомендую вам убедиться, что вы правильно указали LayoutTemplate
и что вы не звоните SetPageProperites
в код позади. (Если вам действительно нужно установить свойства страницы по какой-либо другой причине, вы можете опубликовать новый вопрос, чтобы справиться с этим.)
Какое поведение вы ожидаете вместо текущего ('ArgumentOutOfRangeException')? – Alex
Я не против исключения, но я не могу понять, где бы я справился с этим? Page_Init? –
Я просто проверил простой тест, и я не смог воспроизвести вашу ошибку. Независимо от того, какой мусор я бросил в querystring, ListView/DataPager грациозно обрабатывал все. Можете ли вы поделиться больше кода, как вы связываете ListView? –