如何: 逐頁查看較佳的效能將查詢結果

文章翻譯 文章翻譯
文章編號: 318131 - 檢視此文章適用的產品。
本文已封存。本文係以「現狀」提供且不會再更新。
全部展開 | 全部摺疊

在此頁中

結論

本文將逐步提供有關如何實作分頁的方針。本文提供一些分頁的範例,並說明每個方法的優點。

若要實作分頁的方法

有許多方式分頁。分頁通常是架構上的問題。分頁大多取決於您資料庫的設計和多少記錄您可能會頁面。您可以使用下列方法之一來實作分頁:
  • 使用內建在 DataGrid 控制項中可用的分頁。分頁的這個方法很容易使用,而且也有少數的頁面的記錄時,運作。不過,效能降低時增加的記錄筆數。在 Microsoft Visual Basic.NET 中沒有任何內建的分頁。如需有關如何實作分頁的詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
    305271如何: 自訂分頁 DataGrid Windows 控制項使用 Visual Basic.NET
  • 若要加速效能,設計的查詢或預存程序,以擷取您想要的記錄數目。Custom Paging Sample 區段中,示範如何實作自訂分頁。

    您也可以使用 [TOP 和 WHERE 子句,在您的 SQL 陳述式,來設計查詢或預存程序,以擷取您想要的記錄數目。如需有關如何使用 TOP 和 WHERE 如果要實作自訂分頁請造訪下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN) 網站的詳細資訊:
    查詢結果分頁
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconpagingthroughqueryresult.asp

自訂分頁範例

這個範例會示範如何使用 DataGrid 控制項來實作透過 ASP.NET 自訂分頁。當您使用這個方法時,您可以擷取任何頁面順序中您想要的記錄。如此一來,這個方法會非常有效率及多功能。

這個範例需要資料庫包含具有索引的資料表。雖然這個範例使用 Microsoft SQL Server 和 SQL Server 北風 資料庫,您可以採用這個範例,以使用與任何資料庫。
  1. 請依照下列步驟執行來建立新的 Visual Basic ASP.NET Web 應用程式:
    1. 啟動 Microsoft Visual Studio.NET。
    2. 在 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
    3. 在 [新增專案] 對話方塊按一下 [專案類型 下的 [Visual Basic 專案],然後再按一下 [範本] 下方的 [ASP.NET Web 應用程式
  2. 從工具箱拖曳 DataGrid 控制項來 WebForm1.aspx。
  3. DataGrid1,] 上按一下滑鼠右鍵,然後按一下 [屬性產生器]。
  4. 請依照下列步驟執行 屬性產生器] 對話方塊中:
    1. 按一下 [分頁]。
    2. 按一下以選取 AllowPaging] 和 [AllowCustomPaging] 核取方塊。
    3. PageSize 屬性設定為 3
    4. 按一下 模式] 清單中的 [頁碼]。
    5. 按一下 [套用],然後再按一下 [確定]
  5. 按一下底端的 WebForm1.aspx 開啟 HTML 來源檢視的 HTML。取代以下列程式碼的預設加入 <asp:DataGrid> 標記:
    <asp:DataGrid id="Datagrid1" runat="server" AllowCustomPaging="True" PageSize="3" AllowPaging="True" PagerStyle-Mode="NumericPages" OnPageIndexChanged="DataGrid1_PageIndexChanged">
    </asp:DataGrid>
    					
  6. 按兩下 WebForm1.aspx 頁面,以開啟程式碼] 視窗的空白區域,然後再將下列命名空間加入至頁面的頂端:
    Imports System.Data
    Imports System.Data.SqlClient
    					
  7. 加入下列宣告在 公用類別 Webform1 下的:
        Dim cn As SqlConnection
        Dim StartIndex As Integer
        Dim EndIndex As Integer
    					
  8. 將下列程式碼加入表單的 Page_Load 事件中:
            Dim myCommand As SqlCommand
            cn = New SqlConnection("server = localhost; uid=userid; pwd=password; database=Northwind ")
            If Not IsPostBack Then
                myCommand = New SqlCommand()
                myCommand.CommandText = "Select Count(*) from Products"
                myCommand.Connection = cn
                cn.Open()
                DataGrid1.VirtualItemCount = myCommand.ExecuteScalar()
                cn.Close()
                BindDatagrid()
            End If
    					
  9. Page_Load 副程式後加入下列程式碼:
         Sub BindDatagrid()
            Dim myAdapter As SqlDataAdapter
            Dim DS As DataSet
            EndIndex = StartIndex + DataGrid1.PageSize
            myAdapter = New SqlDataAdapter("Select * From Products Where ProductID > @startIndex And ProductID <= @endIndex Order by ProductID", cn)
            myAdapter.SelectCommand.Parameters.Add("@startIndex", StartIndex)
            myAdapter.SelectCommand.Parameters.Add("@endIndex", EndIndex)
            DS = New DataSet()
            myAdapter.Fill(DS)
            DataGrid1.DataSource = DS
            DataGrid1.DataBind()
        End Sub
    
        Public Sub datagrid1_PageIndexChanged(ByVal source As System.Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs)
            StartIndex = (e.NewPageIndex * DataGrid1.PageSize)
            DataGrid1.CurrentPageIndex = e.NewPageIndex
            BindDatagrid()
        End Sub
    					
  10. 按下 F5 以執行應用程式。
  11. 若要測試專案,選取下列方格中任何頁編號。

屬性

文章編號: 318131 - 上次校閱: 2013年10月24日 - 版次: 2.0
這篇文章中的資訊適用於:
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft ADO.NET 1.1
關鍵字:?
kbnosurvey kbarchive kbmt kbhowtomaster kbsqlclient kbsystemdata KB318131 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:318131
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com