Общее количество строк в элементе управления GridView с использованием LinqDataSource и подкачки
У меня проблема с получением общего количества строк для элементов, отображаемых в 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 ответов
LinqDataSourceEventArgs, возвращаемый в этих событиях, возвращает -1 в следующих случаях:
-1, если объект LinqDataSourceStatusEventArgs был создан во время операции изменения данных; -1, если вы включили настраиваемую подкачку страниц, установив для AutoPage значение true и для RetrieveTotalRowCount значение false.
Проверьте здесь для получения дополнительной информации - таблица внизу показывает различные свойства, которые нужно установить, чтобы вернуть количество строк, но похоже, что вы должны либо установить для свойств AutoPage и AllowPage либо значение true, либо оба значения false.
Судя по таблице в приведенной выше ссылке и приведенному вами примере, для Autopage установлено значение false, а для AllowPaging установлено значение true, поэтому он возвращает количество строк на странице.
НТН
Я застрял с той же проблемой. Я решил свою проблему с помощью следующей строки кода
protected void LinqDataSourcePoints_Selected(отправитель объекта, LinqDataSourceStatusEventArgs e) { totalRecords = (e.Result as List).Count; }
Объяснение: 1-Анализировать e.Result в качестве источника данных. 2-Получить счет.
Работай идеально для меня.
Попробуйте это, я проверил, и он возвращает все строки.
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;
}
убедитесь, что ваше событие "Выбор"
Свойство TotalRowCount действует только для определенных значений AutoPage и AllowPaging. Они оба должны быть истинными (в вашем случае) или оба должны быть ложными.
проверьте следующую страницу для объяснения свойства TotalRowCount.
Ну, я уже установил для AutoPage и AllowPaging значение true. Я подтвердил, что RetrieveTotalRowCount установлен в true, проверив его значение в режиме отладки (не смог найти, где изменить его значение).
И это все еще возвращает -1.
Единственное, чего не хватает:
-1, если объект LinqDataSourceStatusEventArgs был создан во время операции изменения данных;
и я не совсем уверен, что это значит. Я использую модифицированную версию LinqDataSource, чтобы включить некоторую пользовательскую фильтрацию, так что это может быть проблемой. С другой стороны, пока я возился в режиме отладки, мне удалось проверить значение arguments.TotalRowCount, и оно было правильным. Но значение, которое появляется в событии Selected, всегда равно -1.