2010-06-03 40 views
4

我在sql數據庫中使用存儲過程作爲我的.aspx頁面上的SqlDataSourceControl的數據源。然後,我使用SqlDataSourceControl作爲我的頁面上gridview的數據源。網格視圖上的分頁設置爲true。我想要做的是將標籤的文本設置爲gridview中的總行數。我可以使用這個代碼將標籤文本設置爲gridview總行數

'labelRowCount.Text = GridView2.Rows.Count & " layers found" 

要返回每頁結果的數量,但它不會給我總數。我在幾個地方看過,並沒有找到解決方案。

回答

3

您應該使用GridView綁定到的基礎數據源(grid.DataSource)。例如,如果您已將網格綁定到數據表,那麼只需將網格數據源轉換爲數據表,然後使用rows.count屬性獲取總記錄數。另一種方法是在將網格數據源對象設置爲網格之前獲取對網格數據源對象的引用,以便直接獲取記錄數。

因此,例如,(假設你被綁定到數據表)

int count = ((DataTable)grid.DataSource).Rows.Count; 

享受!

0

GridView2.Rows只保存可見的行,所以當頁面大小爲5時,只能得到5條記錄。正如Doug所建議的,您必須將標籤RowCount.Text設置爲ondatabound而不是每次回發,因爲在回發時(當數據源不再綁定時),數據源將不會有任何結果。所以一個好的地方可能是你將網格綁定到數據源的地方。

2

將「事件處理程序」置於「選定」SQL DataSource。該事件處理程序具有SqlDataSourceStatusEventArgs類型的參數。其中AffectedRows是整個數據集的行數(不僅僅顯示在當前頁面上)。所以趕上並寫出你的標籤:

protected void SqlDataSource_Selected(object sender,SqlDataSourceStatusEventArgs e) 
{ 
    if (e.Exception != null) 
    { 
     // do something useful, then... 
     e.ExceptionHandled = true; 
    } 
    else 
     labelRowCount.Text = String.Format("{0} layers found", e.AffectedRows); 
}