2009-12-10 59 views
4

我使用LinqDataSource来填充ASP.NET中的基本GridView。用户有能力过滤结果,所以我在LinqDataSource内使用了几个WhereParametersWhereLinq-to-Sql:使用LinqDataSource以编程方式检索数据

我的客户端已经请求一个选项来将过滤结果导出到文件中。很容易将数据传输到文件中,但我不希望重写代码隐藏中的所有where子句。我只想提取完整的结果集,最好使用已配置的LinqDataSource

当使用LinqDataSourceOnSelect法,e.Result有我后的数据,但我GridViewPageSize设置为20,这意味着LinqDataSource(确实如此),只取前20条记录。

有没有办法得到整个数据集?

回答

6

好的,发现solution由AspGuy,Aref Karimi提供。

以下操作将使用LinqDataSource的配置检索所有记录。甜美如!

IDataSource source = (IDataSource)myLinqDataSource; 
    LinqDataSourceView view = source.GetView("DefaultView") as LinqDataSourceView; 

    DataSourceSelectArguments args = new DataSourceSelectArguments(); 
    args.RetrieveTotalRowCount = view.CanRetrieveTotalRowCount; 
    args.SortExpression = view.OrderBy; 

    List<MyObject> objects = view.Select(args) as List<MyObjects>;