2013-08-06 28 views
0

我試圖顯示從具有多個頁面的gridview中工作的小時總數。Gridview上的Grandtotal頁面

這就是我現在做的:

protected void gwWorkhours_DataBound(object sender, GridViewRowEventArgs e) 
    { 
     int hour = 0; 
     if (e.Row.DataItem != null) 
     { 
      string hours = DataBinder.Eval(e.Row.DataItem, "hours").ToString(); 
       Int32.TryParse(hours, out hour); 
       completeCount += hour; 
     } 

    } 

,但它只能說明我總在第一頁。

我使用的ObjectDataSource來填充像這樣的網格:

gwWorkhours.DataSourceID = "ObjectDataSource1"; 
     gwWorkhours.DataBind(); 

是有可能可能得到來自ObjectDataSource控件的數據表已經綁定到GridView後,於再遍歷它?除非我真的需要,否則我不想再打電話給數據庫。

+0

試問,是否有意義有總計是'GridView'在所有的一部分嗎?例如,假設我有一個表示集合中書籍數量的列,並且網格的第一頁顯示了10條記錄。每行的計數爲2,因此該頁面的總數爲20,但網格總共有20頁,因此所有數據的總計爲400。作爲用戶,我會很困惑地看到10行的值爲2,然後在第10行下面的頁腳中共有400行。我認爲該計劃的邏輯被打破了。 –

回答

1

是的,正如你已經意識到的那樣,你只能獲得一頁的總數,因爲你只是將這一頁加起來。你可以得到實際ObjectDataSourceView這樣的:

var view = this.dataSource.GetView() as ObjectDataSourceView; 

,然後你可以發出Select這樣的:

view.Select(null); 

的參數是DataSourceSelectArguments型的,所以如果你需要在參數傳遞,你將需要建立其中一個。