2009-07-27 9 views
1

Ich habe eine Linq-Abfrage, die ich in eine DataTable kopieren, die dann verwendet wird, um eine Gridview zu füllen. Ich verwende eine Gruppe mit "key" und "count", die ich in der aspx-Seite für eine Master/Detail-Gridview mit einem Repeater auswerte.Linq-Abfrage mit DataTable mit Paging

Das Problem, das mir begegnet, ist, dass die Gridview-Datenquelle und die Bindung an die Datentabelle mir keine zusätzlichen Seiten präsentiert, die Teil der Daten sind. Meine Frage ist:

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

Wenn ich die Original-Datentabelle verwenden (dtDataTable_GridView) direkt habe ich Paging aber sobald ich die Linq-Abfrage tun und kopieren Sie sie zurück in ein neues Datatable (dtTaskOrderTable) Ich verliere die Paging-Funktion.

Wie bekomme ich auch einen Wert von einem Spaltennamen ("Option" zum Beispiel), wenn es Teil von "Items" ist?

Jede Hilfe wäre willkommen. Danke, ChrisB

Antwort

0

Bitte geben Sie die vorherige Antwort außer Acht lassen ich es für das Paging

Es erfordert ICollection-Schnittstelle gelöscht. Weder IEnumerable nore IQuerable wird nicht funktionieren

Liste < (Of < (T>)>) als Listen arbeiten implementieren Schnittstelle ICollection

So müssen Sie

gridview1.DataSource = dtTaskOrderTable.ToList();