1

我有一个 Linq 查询,我将其复制到 DataTable,然后用于填充 gridview。我正在使用一个按“键”和“计数”的组,我在 aspx 页面中对带有中继器的主/详细网格视图进行评估。

我遇到的问题是 gridview 数据源和绑定到数据表没有向我提供任何属于数据的其他页面。我的查询是:

// 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) 我就会失去分页功能。

另外,如果列名(例如“选项”)是“项目”的一部分,我如何从它获取值?

任何帮助,将不胜感激。谢谢,克里斯B

4

1 回答 1

0

请忽略之前的回答,我会删除它

它需要 ICollection 接口进行分页。IEnumerable 和 IQuerable 都不起作用

List<(Of <(T>)>) 将作为 Lists 实现 Icollection 接口工作

所以你需要

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