Zapytanie Linq przy użyciu DataTable ze stronicowaniem

Mam zapytanie Linq, które kopiuję do tabeli DataTable, która jest następnie używana do wypełniania widoku siatki. Używam grupy według „klucza” i „liczby”, którą oceniam na stronie aspx dla widoku siatki wzorcowej/szczegółowej z wzmacniakiem.

Problem, na który napotykam, polega na tym, że źródło danych gridview i powiązanie z tabelą danych nie wyświetla mi żadnych dodatkowych stron będących częścią danych. Moje zapytanie brzmi:

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

Jeśli używam bezpośrednio oryginalnej tabeli danych (dtDataTable_GridView), mam stronicowanie, ale kiedy wykonam zapytanie Linq i skopiuję je z powrotem do nowej tabeli danych (dtTaskOrderTable), tracę funkcję stronicowania.

Ponadto jak uzyskać wartość z nazwy kolumny (na przykład „Opcja”), jeśli jest ona częścią „Elementów”?

Każda pomoc byłaby mile widziana. Dziękuję, ChrisB


person Community    schedule 27.07.2009    source źródło


Odpowiedzi (1)


Proszę zignorować poprzednią odpowiedź, usunę ją

Do stronicowania wymaga interfejsu ICollection. Ani IEnumerable, ani IQuerable nie będą działać

List‹(Of ‹(T>)>) będzie działać, ponieważ Listy implementują interfejs Icollection

Więc potrzebujesz

gridview1.DataSource = dtTaskOrderTable.ToList();
person Bogdan_Ch    schedule 27.07.2009