2015-01-09 43 views
2

我有一個GridView與100個記錄和網格的頁面大小是10.另外我需要從GridView中總結一列,並顯示它在一個標籤。我在頁面加載事件中使用下面的代碼來總結gridview列,它按預期工作。總結與分頁的Gridview列

int sum = 0; 
for (int i = 0; i < gvDetails.Rows.Count; ++i) 
{ 
    sum += Int.Parse(gvDetails.Rows[i].Cells[4].Value.ToString()); 
} 
lblTotal.Text = sum.ToString(); 

該代碼總和整個值,我的意思是100條記錄的總和。但是我只需要10條記錄的總和,其中每個頁面只能保存10條記錄,當我進行分頁並移動到每個頁面時,它只能顯示相應頁面的總和。

爲了簡單起見,我只需要總結我在網格中看到的列值而不是所有記錄。

這是如何實現的?請建議我。

+1

有很多類似的問題要求在SO上做同樣的事情。你有沒有檢查過他們? – Yuck

+0

@Yuck - 是的,我檢查了他們的所有資料,沒有發現任何關係,所以最終以期待的方式發佈在這裏。 – Michael

+0

你有沒有考慮過使用JQuery來完成文檔準備? GridView呈現爲一個HTML表格,您可以循環播放列的單元格,然後逐漸增加,直到獲得總數,然後將其附加到標籤上。 –

回答

0

您可以使用PageIndexPageSize分別獲取當前的gridview頁面索引和頁面大小,並應用邏輯來獲取當前頁面中所需的行集合,並遍歷所需的行以獲得總和。以下是一些代碼片段,以獲取當前頁面中所需的行數。

int pageidx = gvDetails.PageIndex; 
int pagesize = gvDetails.PageSize; 
int startidx = pageidx * pagesize; 
int endidx = startidx + pagesize; 
int sum = 0; 
for (int i = startidx; i < endidx; i++) 
{ 
    sum += Int.Parse(gvDetails.Rows[i].Cells[4].Value.ToString()); 
} 
lblTotal.Text = sum.ToString(); 
+0

但我無法將結果綁定到標籤,它是在gridview之外。 – Michael

+0

@Michael,我的解決方案包括簡單的計算,這與設置'lblTotal.Text'無關,這部分和你的一樣! 。請通過應用程序進行調試,看看'sum'是否有正確的值。 –

+0

@Arindham Nayak - Sum有正確的值,但問題在於每次執行分頁時,相應頁面的列總和沒有被綁定到標籤。 – Michael

1

您可以使用GridView_RowDataBound,在GridView中爲每個頁面執行。

+0

這是一個質量很低的答案。請擴展一下[如何回答](http://stackoverflow.com/help/how-to-answer) – AgataB