2010-08-27 6 views
3

Je cherche un moyen de faire de la pagination avec un GridView quand je définis la source de données au moment de l'exécution en utilisant une requête linq. voici mon code:ASP.NET GridView Paging en utilisant la requête Linq comme source de données

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(); 

J'ai la grille configuré pour autoriser la pagination, mais je reçois une erreur qui dit que l'événement PageIndexChanging n'a pas été traitée. J'ai cherché et trouvé ce qui suit:

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

Mais qui fonctionne bien lorsque vous utilisez un datatable mais pas avec LINQ. Si j'ajoute un rebind dans l'événement, il doit requery 7000 enregistrements qui peuvent être un peu lent. Est-ce que quelqu'un sait comment réparer la pagination lorsque vous utilisez linq comme ça?

Répondre

3
+0

ne pas utiliser un objet DAL ou objectdatasource pour est. Il suffit simplement de créer un type anonyme avec linq puis de se lier directement à la grille. – ecspot

+0

Si vous voulez suivre cette voie, vous aurez de mauvaises performances. Ce n'est pas la bonne façon de le faire ... Vous devriez utiliser une source de données LINQ par exemple qui vous donne un support pour une pagination efficace. –

+0

Je ne peux pas lier plusieurs tables en utilisant linqdatasource sinon je me lierais à ça. Connaissez-vous un moyen d'utiliser linqdatasource pour faire cette requête? Les données proviennent de 4 tables différentes. – ecspot

Questions connexes