DataGrid和存储过程结合的分页,只读取当前页数据

datagrid|存储过程|分页|数据

 

<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data" %>

<Script Runat="Server">

Dim conNorthwind As SqlConnection
Dim strSelect As String
Dim intStartIndex As Integer
Dim intEndIndex As Integer

Sub Page_Load
  Dim cmdSelect As SqlCommand
  btnFirst.Text = "首页"
  btnPrev.Text = "上一页"
  btnNext.Text = "下一页"
  btnLast.Text = "末页"
  conNorthwind = New SqlConnection( "Server=192.168.4.1;UID=sa;PWD=XXXXXX;Database=NorthWind" )
  If Not IsPostBack Then
    ' Get Total Pages
    strSelect = "SELECT COUNT(OrderID) FROM Orders"
    cmdSelect = New SqlCommand( strSelect, conNorthwind )
    conNorthwind.Open()
    dgrdProducts.VirtualItemCount = (cmdSelect.ExecuteScalar() / dgrdProducts.PageSize)
    conNorthwind.Close()
    BindDataGrid
  End If
End Sub

Sub BindDataGrid
  Dim dadProducts As SqlDataAdapter
  Dim dstProducts As DataSet

  intEndIndex = dgrdProducts.PageSize
  dadProducts = New SqlDataAdapter( "OrdersPaged", conNorthwind )
  dadProducts.SelectCommand.CommandType = CommandType.StoredProcedure
  dadProducts.SelectCommand.Parameters.Add( "@PageIndex", intStartIndex )
  dadProducts.SelectCommand.Parameters.Add( "@PageSize ", intEndIndex )
  dstProducts = New DataSet
  dadProducts.Fill( dstProducts )

  dgrdProducts.DataSource = dstProducts
  dgrdProducts.DataBind()
End Sub

Sub dgrdProducts_PageIndexChanged( s As Object, e As DataGridPageChangedEventArgs )
  intStartIndex = e.NewPageIndex
  dgrdProducts.CurrentPageIndex = e.NewPageIndex
  BindDataGrid
End Sub
Sub PagerButtonClick(ByVal sender As Object, ByVal e As EventArgs)
  Dim arg As String = sender.CommandArgument
  Select Case arg
      Case "next"
        If (dgrdProducts.CurrentPageIndex < (dgrdProducts.PageCount - 1)) Then
           dgrdProducts.CurrentPageIndex += 1
        End If
      Case "prev"
        If (dgrdProducts.CurrentPageIndex > 0) Then
           dgrdProducts.CurrentPageIndex -= 1
        End If
      Case "last"
           dgrdProducts.CurrentPageIndex = (dgrdProducts.PageCount - 1)
      Case Else
        'page number
        dgrdProducts.CurrentPageIndex = System.Convert.ToInt32(arg)
  End Select
  intStartIndex=dgrdProducts.CurrentPageIndex
  BindDataGrid
End Sub
</Script>

<html>
<head><title>Paging.aspx</title></head>
<body>
<form Runat="Server">

<asp:DataGrid Runat="Server"
  ID="dgrdProducts"
  showheader="false"
  AllowPaging="True"
  AllowCustomPaging="True"
  PageSize="10"
  OnPageIndexChanged="dgrdProducts_PageIndexChanged"
  PagerStyle-Mode="NumericPages"
  AlternatingItemStyle-BackColor="#eeaaee"
  HeaderStyle-BackColor="#aaFFdd"
  Font-Size="10pt"
  Font-Name="Verdana"
  CellSpacing="0"
  CellPadding="3"
  GridLines="Both"
  BorderWidth="1"
  BorderColor="black"
  PagerStyle-HorizontalAlign="Right">
  <AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
</asp:datagrid>
<asp:linkbutton id="btnFirst" runat="server" Font-Name="verdana" Font-size="8pt" ForeColor="navy" CommandArgument="0"></asp:linkbutton> 
<asp:linkbutton id="btnPrev" runat="server" Font-Name="verdana" Font-size="8pt" ForeColor="navy" CommandArgument="prev"></asp:linkbutton> 
<asp:linkbutton id="btnNext" runat="server" Font-Name="verdana" Font-size="8pt" ForeColor="navy" CommandArgument="next"></asp:linkbutton> 
<asp:linkbutton id="btnLast" runat="server" Font-Name="verdana" Font-size="8pt" ForeColor="navy" CommandArgument="last"></asp:linkbutton>
</form>
</html>
下面是存储过程:
CREATE PROCEDURE OrdersPaged
(
  &nb

时间: 2024-10-12 19:15:29

DataGrid和存储过程结合的分页,只读取当前页数据的相关文章

DataGrid基于Access的快速分页法

access|datagrid|分页 DataGrid是一个功能非常强大的ASP.NET Web服务器端控件,它除了能够方便地按各种方式格式化显示表格中的数据,还可以对表格中的数据进行动态的排序.编辑和分页.使Web开发人员从繁琐的代码中解放.实现DataGrid的分页功能一直是很多初学ASP.NET的人感到棘手的问题,特别是自定义分页功能,实现方法多种多样,非常灵活.本文将向大家介绍一种DataGird控件在Access数据库下的快速分页法,帮助初学者掌握DataGrid的分页技术. 目前的分

Sql server存储过程和C#分页类简化你的代码

server|sql|存储过程|分页 Sqlserver存储过程和C#分页类简化你的代码! 在最近的项目中,由于要用到自定义分页的功能,本人就在网上找了个存储过程.结合C#写了个分页类.由于本人第一次写文章.写得不好,大家不要扔鸡蛋.. 下面是存储过程(sqlserver2000下通过) --最通用的分页存储过程 -- 获取指定页的数据   CREATE PROCEDURE Pagination   @tblName   varchar(255),       -- 表名   @strGetFi

ASP.NET调用oracle存储过程实现快速分页

asp.net|oracle|存储过程|分页 包定义:  create or replace package MaterialManage is  TYPE T_CURSOR IS REF CURSOR;  Procedure Per_QuickPage  (  TbName         in   varchar2,     --表名  FieldStr       in   varchar2,     --字段集  RowFilter      in   varchar2,     --过

DataGrid连接Access的快速分页法(1)——需求与现状

access|datagrid|分页 DataGrid连接Access的快速分页法(1)--需求与现状一.需求分析 DataGrid是一个功能强大的ASP.NET Web服务器端控件,它除了能够按各种方式格式化显示数据,还可以对数据进行动态的排序.编辑和分页.大大减轻了广大Web程序员的工作量.实现DataGrid的分页功能一直是很多入门者感到棘手的问题,特别是自定义分页功能,实现的方法多种多样,非常灵活. 目前大家公认性能最好的应该数SQL Sever结合存储过程的解决方案.因为在SQL Se

sql-关于单表SQL存储过程查询。分页条数,当前页码,总条数的问题

问题描述 关于单表SQL存储过程查询.分页条数,当前页码,总条数的问题 我实现PUB_AREA 表的数据查询, 上面是我写的调试, 指出在下面and处报错,无布尔类型,不知道到底哪里错了- - declare @TotalNum intexec PUB_AREA_SelectAREACITYByHsfSearchss ''101@TotalNum outputselect @TotalNumalter PROCEDURE [dbo].[PUB_AREA_SelectAREACITYByHsfSe

Asp.NET的DataGrid排序,选择和分页

asp.net|datagrid|分页|排序 DataGrid是Asp.NET中的一个重要的控件,经常我们都将DataGrid做成可分页的和可排序的,有时还需要加上选择功能.这些都是经常需要用到的方法,其实是比较简单的. 设计思路: 为了方便起见,我们连接SQL Server 2000的NorthWind数据库的Orders表,从数据库里得到此表的数据视图.利用DataGrid的SortCommand事件实现排序.用一个模板列加上CheckBox控件实现选择.可用DataGrid的属性生成器的"

实现分页的例子-使用存储过程来实现分页

在  网上 讨论 如何 实现 分页  有很多程序,我在这里向大家  介绍一种实现分页的新的方法,使用 存储过程 来实现分页    由于 这段程序写的 比较早,那个时候 还没有 SQL 7,每一个 Varchar 只能 支持 255 个字符,所以 采取了一种比较笨的办法,如果大家有兴趣,请去  http://www.chinaasp.com/sqlbbs/default.asp 的数据库论坛发表意见,我会看情况,决定是否将这个 存储过程修改成为SQL 7 的存储过程:   并在此起到 一个 抛砖引

DataGrid连接Access的快速分页法(2)——SQL语句的选用(升序)

access|datagrid|分页|语句 DataGrid连接Access的快速分页法(2)--SQL语句的选用(升序)一.相关概念 在 ACCESS 数据库中,一个表的主键(PRIMARY KEY,又称主索引)上必然建立了唯一索引(UNIQUE INDEX),因此主键字段的值是不会重复的.并且索引页依据索引列的值进行排序,每个索引记录包含一个指向它所引用的数据行的指针.我们可以利用主键这两个特点来实现对某条记录的定位,从而快速地取出某个分页上要显示的记录. 举个例子,假设主键字段为 INTE

DataGrid连接Access的快速分页法(3)——SQL语句的选用(降序)

access|datagrid|分页|语句 DataGrid连接Access的快速分页法(3)--SQL语句的选用(降序)三.降序(1)@PageIndex <= @FirstIndexSELECT TOP @PageSize @QueryFields FROM @TableName WHERE @ConditionORDER BY @PrimaryKey DESC (2)@FirstIndex < @PageIndex <= @MiddleIndex SELECT TOP @PageS