Общее количество строк в элементе управления GridView с использованием LinqDataSource и подкачки - PullRequest
4 голосов
/ 26 августа 2008

У меня проблема с получением общего количества строк для элементов, отображаемых в Gridview с использованием Paging и с источником данных LinqDataSource.

Я пробовал несколько подходов:

protected void GridDataSource_Selected(object sender, LinqDataSourceStatusEventArgs e)  
{  
    totalLabel.Text = e.TotalRowCount.ToString();  
}

возвращает -1 каждый раз.

protected void LinqDataSource1_Selected(object sender, LinqDataSourceStatusEventArgs e)  
{  
    System.Collections.Generic.List<country> lst  = e.Result as System.Collections.Generic.List<country>;  
    int count = lst.Count;  
}

дает мне только счет для текущей страницы, а не итоговую.

Любые другие предложения?

Ответы [ 5 ]

3 голосов
/ 26 августа 2008

LinqDataSourceEventArgs, возвращаемые в этих событиях, возвращают -1 в следующих случаях:

-1, если объект LinqDataSourceStatusEventArgs был создан во время операции изменения данных; -1, если вы включили настраиваемую подкачку страниц, установив для AutoPage значение true и для RetrieveTotalRowCount значение false.

Проверьте здесь для получения дополнительной информации - таблица внизу показывает различные свойства, которые нужно установить, чтобы вернуть количество строк, но похоже, что вы должны либо установить для свойств AutoPage и AllowPage либо true, либо оба ложные.

Судя по таблице в приведенной выше ссылке и приведенному вами примеру, для Autopage установлено значение false, а для AllowPaging установлено значение true, поэтому он возвращает количество строк на странице.

НТН

0 голосов
/ 27 июля 2010

попробуйте, я проверил, и он возвращает все строки.

  protected void LinqDataSource1_Selecting(object sender, LinqDataSourceStatusEventArgs e)
        {
           System.Collections.Generic.List<country> lst  = e.Result as System.Collections.Generic.List<country>;

           int count = lst.Count;
        }

убедитесь, что ваше событие " Выбор "

0 голосов
/ 27 июля 2010

Я застрял с той же проблемой. Я решил свою проблему с помощью следующей строки кода

защищенный void LinqDataSourcePoints_Selected (отправитель объекта, LinqDataSourceStatusEventArgs e) { totalRecords = (e.Result as List) .Count; }

Пояснение: 1-Parse e.Result как ваш источник данных 2-Получить счет.

Идеально подходит для меня.

0 голосов
/ 26 августа 2008

Ну, я уже установил для AutoPage и AllowPaging значение true. Я подтвердил, что RetrieveTotalRowCount установлен в true, проверив его значение в режиме отладки (не смог найти, где изменить его значение).

И он по-прежнему возвращает -1.

Единственное, чего не хватает:

-1, если объект LinqDataSourceStatusEventArgs был создан во время операции изменения данных;

и я не совсем уверен, что это значит. Я использую модифицированную версию LinqDataSource для включения некоторой пользовательской фильтрации, так что это может быть проблемой. С другой стороны, пока я возился в режиме отладки, мне удалось проверить значение arguments.TotalRowCount, и оно было правильным. Но значение, которое появляется в событии Selected, всегда равно -1.

0 голосов
/ 26 августа 2008

Свойство TotalRowCount действительно только для определенных значений AutoPage и AllowPaging. Они оба должны быть истинными (в вашем случае) или оба ложными.

проверьте следующую страницу для объяснения свойства TotalRowCount.

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.linqdatasourcestatuseventargs.totalrowcount.aspx

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