2010-08-24 21 views
2

我有一個使用LinqDataSource的GridView。 GridView具有默認的分頁啓用。我想在分頁發生之前從LinqDataSource中檢索數據,以便我可以使用Linq2SQL計算整個數據庫的單個列的總和。跳過並執行之前從LinqDataSource檢索數據?

現在,我正在使用LinqDataSource_Selected事件與LinqDataSourceStatusEventArgs.Result,但它只是在分頁後(即該頁上的數據)返回數據。

protected void linqDataSource_Selected(Object sender, LinqDataSourceStatusEventArgs e) 
{ 
    var totalTime = (e.Result as List<Ticket>).Sum(t => t.TimeSpent); 
    gridView.Columns[8].FooterText = "Sum: " + totalTime; 
} 

所以我的問題是:如何在分頁發生之前從LinqDataSource中檢索數據?

回答

1

LINQDataSource類有一個GetView()方法返回一個DataSourceView對象。 DataSourceView有一個ExecuteSelect()方法,它將直接查詢數據源。你應該可以在ExecuteSelect()方法上使用LINQ語法來獲得你的總和。

+0

嗨,謝謝你的回覆! 你介意多解釋一下嗎?我嘗試從我的LINQDataSource('linqDataSource.GetView()')調用GetView(),但Visual Studio給了我這個錯誤: '由於其保護級別''無法訪問方法'GetView' – sntran 2010-08-24 17:42:55

+0

你是對的, GetView()方法受保護。我似乎無法找到直接使用LINQDataSource查詢的任何內容。您可能會更好地創建一個單獨的LINQDataSource,僅用於總和。 – 2010-08-24 17:52:54