1

私は DataTable にコピーする Linq クエリを持っており、これを使用してグリッドビューを作成します。リピーター付きのマスター/詳細グリッドビューのaspxページで評価する「キー」と「カウント」によるグループを使用しています。

私が遭遇している問題は、グリッドビュー データソースとデータ テーブルへのバインドが、データの一部である追加のページを表示しないことです。私のクエリは次のとおりです。

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

元のデータテーブル (dtDataTable_GridView) を直接使用するとページングが発生しますが、Linq クエリを実行して新しいデータテーブル (dtTaskOrderTable) にコピーすると、ページング機能が失われます。

また、「項目」の一部である場合、列名 (たとえば「オプション」) から値を取得するにはどうすればよいですか?

どんな助けでも大歓迎です。ありがとう、ChrisB

4

1 に答える 1

0

前の回答は無視してください削除します

ページングには ICollection インターフェイスが必要です。IEnumerable も IQuerable も機能しません

List<(Of <(T>)>) は、リストが Icollection インターフェイスを実装するときに機能します

だからあなたが必要です

gridview1.DataSource = dtTaskOrderTable.ToList();
于 2009-07-27T16:29:39.880 に答える