2009-12-10 58 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>;