2009-07-27 9 views
1

J'ai une requête Linq que je copie dans un DataTable qui est ensuite utilisée pour remplir une vue de grille. J'utilise un groupe par "clé" et "compte" que j'évalue dans la page aspx pour une grille/détail grille avec un répéteur.Requête Linq à l'aide de DataTable avec pagination

Le problème que je rencontre est que la source de données gridview et lier à la datatable ne me présente pas de pages supplémentaires qui font partie des données. Ma requête est:

// Using Linq generate the query command from the DataTable 
var query = from c in dtDataTable_GridView.AsEnumerable() 
group c by c.Field<string>("CLIN") into g 
select new 
{ 
    Key = g.Key, 
    Count = g.Count(), 
    Items = from i in g          
     select new 
     { 
      CLIN = i.Field<string>("CLIN"), 
      SLIN = i.Field<string>("SLIN"), 
      ACRN = i.Field<string>("ACRN"), 
      CLINType = i.Field<string>("CLINType"), 
      Option = i.Field<string>("Option"), 
      Unit = i.Field<string>("Unit") 
     } 
}; 

// Use extension methods to create new DataTable from query 
dtTaskOrderTable = query.CopyToDataTable(); 

// Set the datasource 
gridview1.DataSource = dtTaskOrderTable; 

// Bind to the GridView 
gridview1.DataBind(); 

Si je datatable d'origine (dtDataTable_GridView) directement J'ai radiomessagerie, mais une fois que je fais la requête LINQ et le copier vers un nouveau DataTable (dtTaskOrderTable) je perds la fonction de recherche de personnes.

Comment puis-je obtenir une valeur à partir d'un nom de colonne ("Option" par exemple) s'il fait partie de "Items"?

Toute aide serait appréciée. Merci, ChrisB

Répondre

0

S'il vous plaît ne pas tenir compte de la réponse précédente, je vais le supprimer

Il faut interface ICollection pour la pagination. Ni IEnumerable Nore IQuerable ne fonctionnera pas

Liste < (de < (T>)>) fonctionnera sous forme de listes mettre en œuvre l'interface ICollection

Vous avez donc besoin

gridview1.DataSource = dtTaskOrderTable.ToList();