代码之家  ›  专栏  ›  技术社区  ›  Chris

使用带有分页的DataTable的Linq查询

  •  1
  • Chris  · 技术社区  · 15 年前

    我有一个Linq查询,我将它复制到一个DataTable中,然后用它来填充gridview。我使用的是一个按“键”和“计数”分组的方法,我在aspx页面中为带有中继器的master/detail gridview求值。

    我遇到的问题是,gridview数据源和绑定到datatable没有向我显示作为数据一部分的任何其他页面。 我的问题是:

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

    另外,如果列名是“Items”的一部分,如何从列名(例如“Option”)中获取值?

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   Bogdan_Ch    15 年前

    请忽略前面的答案我将删除它

    它需要ICollection接口来分页。 两个不可数的不可数项都不起作用

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

    所以你需要

    gridview1.DataSource = dtTaskOrderTable.ToList();