Использование стандартного ASP.NET ListView с включенным LinqDataSource и возможностью разбивки на страницы (с помощью DataPager), каков был бы лучший способ по умолчанию отображать последнюю страницу результатов?По умолчанию последняя страница в ListView
ответ
установить текущий индекс страницы, чтобы быть количество страниц - 1.
Вам нужно знать общее количество записей и количество записей, отображаемых на одной странице.
This полезно после показывает, как получить количество записей:
private LinqDataSourceSelectEventArgs args;
protected void LinqDataSource1_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
args = e;
e.Result = new Database().Table.Whatever...
}
protected void LinqDataSource1_Selected(object sender, LinqDataSourceStatusEventArgs e)
{
this.label1.Text = args.Arguments.TotalRowCount + " records";
}
Там в дальнейшее обсуждение есть ситуации, которая кажется похожа на вашу.
Это даст нам количество строк, и оттуда мы сможем определить количество присутствующих страниц, но я до сих пор не вижу способа установить индекс страницы. –
Я никогда не делал этого, но есть несколько мест, которые я хотел бы посмотреть, могу ли я сделать требуемое изменение: обработчик OnSelecting для источника данных, OnPreRender или OnDataBinding для ListView и OnPreRender для DataPager , По сути, вы хотите обработать случай !IsPostBack
особым образом. Я, вероятно, сначала посмотрю на DataPager и посмотрю, сможете ли вы узнать, сколько страниц есть, и установить его на последнюю страницу. Возможно, вам придется перестроить источник данных после установки страницы на нужную вам. После этого я бы посмотрел на добавление обработчика OnDataBinding для ListView и посмотреть, что вы можете там сделать. Я подозреваю, что PreRender слишком поздно, чтобы ListView имел какой-либо эффект и OnSelecting, хотя он хорош для фильтрации через функцию на основе таблиц, вероятно, в этом случае не принесет больших пользы.
Да, но где можно найти число страниц и где вы можете установить индекс страницы? –