ASP.NET GridView Paging с использованием запроса Linq в качестве источника данных - PullRequest
3 голосов
/ 27 августа 2010

Я ищу способ сделать пейджинг с помощью GridView, когда я устанавливаю источник данных во время выполнения, используя запрос linq.Вот мой код:

ETDataContext etdc = new ETDataContext();
var accts = from a in etdc.ACCOUNTs
            orderby  a.account_id
            select new
            {
                Account = a.account_id,
                aType = a.SERVICEs.FirstOrDefault().SERVICE_TYPE.service_type_desc,
                name = a.SERVICEs.FirstOrDefault().service_name,
                Letter_dt = a.create_dt,
                PrimAccthldr = a.PEOPLE.first_name + " " + a.PEOPLE.middle_name + " " + a.PEOPLE.last_name
             };
GridView1.DataSource = accts;
GridView1.BindData();

У меня есть сетка, разрешающая пейджинг, но я получаю сообщение об ошибке, которое говорит о том, что событие PageIndexChanging не было обработано.Я искал вокруг и нашел следующее:

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
     GridView1.PageIndex = e.NewPageIndex;
     GridView1.DataBind();
}

Но это хорошо работает, когда вы используете datatable, но не с linq.Если я добавлю повторное связывание в событие, оно должно запросить 7000 записей, что может быть немного медленным.Кто-нибудь знает, как исправить подкачку при использовании linq, как это?

1 Ответ

3 голосов
/ 27 августа 2010

Возможное решение:

http://www.devtoolshed.com/content/gridview-objectdatasource-linq-paging-and-sorting

http://www.dbtutorials.com/display/linq-to-sql-paging-cs.aspx

Другая возможность здесь:

Использовать источник данных LINQ, как описано Скоттом Гатри(отец ASP) http://weblogs.asp.net/scottgu/archive/2007/07/16/linq-to-sql-part-5-binding-ui-using-the-asp-linqdatasource-control.aspx

...