如何: 通过查询结果页面更好的性能

文章翻译 文章翻译
文章编号: 318131 - 查看本文应用于的产品
本文已归档。它按“原样”提供,并且不再更新。
展开全部 | 关闭全部

本文内容

概要

本分步指南介绍提供了有关如何实现分页的准则。本文提供了几个页面的示例,并描述了每个方法的优点。

要实现分页的方法

有许多方法可以分页。分页通常是一个体系结构的问题。分页很大程度上取决于您的数据库设计和多少记录必须按页。您可以使用下列方法之一来实现分页:
  • 使用 DataGrid 控件中可用的内部分页。此方法的分页易于使用,并且您具有少量的记录页时也起作用。但是时的记录数增加, 会降低性能。在 Microsoft Visual Basic.net 中,没有任何内部分页。有关如何实现分页的其他信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
    305271如何: 自定义页数据网格 Windows 控件通过使用 Visual Basic.net
  • 若要加快性能,设计查询或存储的过程来检索所需的记录数。Custom Paging Sample 部分演示如何实现自定义分页。

    您还可以使用该 TOP 和 WHERE 子句,在 SQL 语句来设计查询或存储的过程来检索所需的记录数。有关如何使用 TOP 和要实现自定义页交换 WHERE 请访问下面的 Microsoft 开发人员网络 (MSDN) 的网站的详细信息:
    通过查询结果分页
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconpagingthroughqueryresult.asp

自定义分页示例

此示例演示如何使用 DataGrid 控件实现自定义分页通过 ASP.NET。您在使用此方法时,您可以检索要在任何页面顺序中的记录。如此一来,此方法是高效率和通用。

此示例要求数据库包括具有索引的表。尽管此示例使用 Microsoft SQL Server 和 SQL Server Northwind 数据库,但您也可以修改此示例以使用与任何数据库。
  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. 单击以选中 AllowPagingAllowCustomPaging 复选框。
    3. PageSize 属性设置为 3
    4. 模式 列表中单击 页码
    5. 单击 应用,然后单击 确定
  5. 单击 HTML WebForm1.aspx 打开 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
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 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