2017-07-12 51 views
0

我正在使用c#在asp.net中的web應用程序工作,我想要顯示從10.000 - 1.000.000大量的行。數據綁定的速度很快,因爲我在調試模式下逐步檢查,但是當頁面嘗試顯示GridView時,它需要永久使用。有什麼建議麼?在c#中使用GridView的數據緩慢人口asp.net

+0

問題是,當客戶端(瀏覽器)儘量不要顯示大量的GUI。您應該使用'GridView'分頁 –

+0

您的對象在裝訂之前是否被填充?通常更新需要時間。您可以在更新時將綁定設置爲空,然後重新綁定。 – jdweng

+0

@jdweng它是空的,就像我在我的問題中所說的所有代碼運行得很快,顯示時間很慢。 –

回答

0

問題是客戶端(瀏覽器)嘗試顯示(渲染)大量的GUI時。要求客戶提供10,000 - 1,000,000行可以明確地花費太多時間。

您的問題的一個解決方案是使用分頁使用AllowPagingPageSize屬性。這會將您的GridView中顯示的行數限制爲您在PageSize屬性中設置的行數。

HTML

<asp:GridView ID="gv" 
       runat="server" 
       OnPageIndexChanging="gv_PageIndexChanging" 
       OnPageIndexChanged="gv_PageIndexChanged" 
       AllowPaging="true" 
       PageSize="50"> 
     <Columns> 
       .... 

後面的代碼

protected void gv_PageIndexChanged(object sender, EventArgs e) 
{ 
    // bind your data 
    gv.DataBind(); 
} 
protected void gv_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    if (e.NewPageIndex == -1) 
     gv.PageIndex = Int32.MaxValue; 
    else 
     gv.PageIndex = e.NewPageIndex; 
} 

建議:使用上述解決方案應該解決UI問題,但是巨大的數據量將仍然是取得。我建議在SQL級別UI級別中分頁。

+0

請記住,即使只顯示了50個,所有行仍會每次加載。 – VDWWD

+0

@VDWWD我知道,但閱讀OP的問題說:*數據綁定很快,因爲我在調試模式下一步一步檢查* –

+0

這是真的,但加載一百萬行顯示只有50看起來這樣的浪費。 – VDWWD

0

您應該爲此問題設計一個查詢,例如,您希望在gridview分頁的每個頁面上顯示10 000條記錄中的10條記錄。

傳遞三個參數(「@startRowIndex」,「@startRowIndex」,「@maximumRows」)從你的GridView在下面的SELECT語句,並使用ROW_NUMBER()方法(SQL Server 2005的上方支持的話),以獲得連續增加的行數。

SELECT ... 
FROM 
(SELECT ... 
    ROW_NUMBER() OVER(ORDER BY ColumnName) as RowNum 
FROM Employees e 
) as DerivedTableName 
WHERE RowNum BETWEEN @startRowIndex AND (@startRowIndex + @maximumRows) - 1 

鏈接1:http://www.4guysfromrolla.com/articles/031506-1.aspx