Сведения о вопросе

LiKIY

17:37, 15th August, 2020

Теги

c#   asp.net   linq   gridview    

Общее количество строк в элементе управления GridView с использованием LinqDataSource и подкачки

Просмотров: 430   Ответов: 5

У меня есть проблема с получением общего количества строк для элементов, отображаемых в A Gridview с помощью подкачки и с A 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;  
}

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

Есть еще какие-нибудь предложения?



  Сведения об ответе

baggs

02:53, 14th August, 2020

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

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

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

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

HTH


  Сведения об ответе

P_S_S

20:49, 1st August, 2020

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

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

убедитесь, что ваше мероприятие " выбрано "


  Сведения об ответе

JUST___

13:32, 3rd August, 2020

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

охраняемых недействительными LinqDataSourcePoints_Selected(объект отправителя, LinqDataSourceStatusEventArgs е) { totalRecords = (e.Result как список).Рассчитывать; }

Объяснение: 1-Проанализируйте e. Result в качестве источника данных 2-получить счет.

Отлично работайте для меня.


  Сведения об ответе

P_S_S

12:41, 27th August, 2020

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

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

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


  Сведения об ответе

PAGE

02:25, 15th August, 2020

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

И он все равно возвращает значение -1.

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться