Подсчет элементов в источнике данных gridview (.net) - PullRequest
0 голосов
/ 28 сентября 2011

У меня есть GridView и я привязываю к нему список:

List<T> items = T.GetItems();

GridView.DataSource = items.OrderBy(x => x.SomeValue);
GridView.DataBind();

Теперь в процессе привязки данных я хотел бы получить доступ к общему количеству элементов в источнике данных.

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    //access total number of datasource items
}

GridView.Rows или GridView.DataKeys не помогают, потому что на этом этапе создается представление сетки.Конечно, я мог бы использовать items.Count (), но я бы предпочел получить прямой доступ к базовому источнику данных.

Обновление

Опубликованные решения работают без оператора OrderBy, которыйЯ включил позже.

Ответы [ 3 ]

1 голос
/ 28 сентября 2011

Полагаю, вы могли бы получить доступ к количеству предметов, выполнив что-то вроде следующего:

      int count = (GridView1.DataSource as List<T>).Count;

Надеюсь, это поможет !!

Редактировать 1:

Добавлен полный методб.

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {

        int count = (GridView1.DataSource as List<string>).Count;

    }
1 голос
/ 28 сентября 2011
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
   var count = ((ICollection<T>)GridView.DataSource).Count;
}
0 голосов
/ 29 сентября 2011

С моим обновлением, количество элементов можно получить с помощью

var count = ((IEnumerable<T>)GridView.DataSource).Count();
...