По умолчанию последняя страница в ListView - PullRequest
3 голосов
/ 05 ноября 2008

При использовании стандартного ASP.NET ListView с включенным LinqDataSource и разбиением на страницы (с DataPager), как лучше всего по умолчанию отображать последнюю страницу результатов?

Ответы [ 3 ]

1 голос
/ 05 ноября 2008

Вам необходимо знать общее количество записей и количество записей, отображаемых на странице.

В этом полезном посте показано, как узнать количество записей:

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";
}

Далее обсуждается ситуация, похожая на вашу.

1 голос
/ 06 ноября 2008

Я никогда не делал этого, но есть несколько мест, где я хотел бы посмотреть, смогу ли я внести необходимые изменения: обработчик OnSelecting для источника данных, OnPreRender или OnDataBinding для ListView и OnPreRender для DataPager. По сути, вы хотите обрабатывать случай !IsPostBack особым образом. Я, вероятно, сначала посмотрю на DataPager и посмотрю, сможете ли вы узнать, сколько там страниц, и установить его на последнюю страницу. Возможно, вам придется заново привязать источник данных после установки страницы на тот, который вы хотите. После этого я посмотрю на добавление обработчика OnDataBinding для ListView и посмотрим, что вы можете там сделать. Я подозреваю, что PreRender происходит слишком поздно для ListView, чтобы иметь какой-либо эффект, и OnSelecting, хотя и хорош для фильтрации через табличную функцию, вероятно, не принесет особой пользы в этом случае.

1 голос
/ 05 ноября 2008

установить текущий индекс страницы равным количеству страниц - 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...