`

大数量查询分页显示

阅读更多

微软的解决办法


using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Windows.Forms;

public class PagingSample: Form
{
// Form controls.
Button prevBtn = new Button();
Button nextBtn = new Button();

static DataGrid myGrid = new DataGrid();
static Label pageLbl = new Label();

// Paging variables.
static int pageSize = 10; // Size of viewed page.
static int totalPages = 0; // Total pages.
static int currentPage = 0; // Current page.
static string firstVisibleCustomer = ""; // First customer on page to determine location for move previous.
static string lastVisibleCustomer = ""; // Last customer on page to determine location for move next.

// DataSet to bind to DataGrid.
static DataTable custTable;

// Initialize connection to database and DataAdapter.
static SqlConnection nwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind");
static SqlDataAdapter custDA = new SqlDataAdapter("", nwindConn);
static SqlCommand selCmd = custDA.SelectCommand;

public static void GetData(string direction)
{
// Create SQL statement to return a page of records.
selCmd.Parameters.Clear();

switch (direction)
{
case "Next":
selCmd.CommandText = "SELECT TOP " + pageSize + " CustomerID, CompanyName FROM Customers " +
"WHERE CustomerID > @CustomerId ORDER BY CustomerID";
selCmd.Parameters.Add("@CustomerId", SqlDbType.VarChar, 5).Value = lastVisibleCustomer;
break;
case "Previous":
selCmd.CommandText = "SELECT TOP " + pageSize + " CustomerID, CompanyName FROM Customers " +
"WHERE CustomerID < @CustomerId ORDER BY CustomerID DESC";
selCmd.Parameters.Add("@CustomerId", SqlDbType.VarChar, 5).Value = firstVisibleCustomer;
break;
default:
selCmd.CommandText = "SELECT TOP " + pageSize + " CustomerID, CompanyName FROM Customers ORDER BY CustomerID";

// Determine total pages.
SqlCommand totCMD = new SqlCommand("SELECT Count(*) FROM Customers", nwindConn);
nwindConn.Open();
int totalRecords = (int)totCMD.ExecuteScalar();
nwindConn.Close();
totalPages = (int)Math.Ceiling((double)totalRecords / pageSize);

break;
}

// Fill a temporary table with query results.
DataTable tmpTable = new DataTable("Customers");
int recordsAffected = custDA.Fill(tmpTable);

// If table does not exist, create it.
if (custTable == null)
custTable = tmpTable.Clone();

// Refresh table if at least one record returned.
if (recordsAffected > 0)
{
switch (direction)
{
case "Next":
currentPage++;
break;
case "Previous":
currentPage--;
break;
default:
currentPage = 1;
break;
}

pageLbl.Text = "Page " + currentPage + " of " + totalPages;

// Clear rows and add new results.
custTable.Rows.Clear();

foreach (DataRow myRow in tmpTable.Rows)
custTable.ImportRow(myRow);

// Preserve first and last primary key values.
DataRow[] ordRows = custTable.Select("", "CustomerID ASC");
firstVisibleCustomer = ordRows[0][0].ToString();
lastVisibleCustomer = ordRows[custTable.Rows.Count - 1][0].ToString();
}
}



public PagingSample()
{
// Initialize controls and add to form.
this.ClientSize = new Size(360, 274);
this.Text = "NorthWind Data";

myGrid.Location = new Point(10,10);
myGrid.Size = new Size(340, 220);
myGrid.AllowSorting = true;
myGrid.CaptionText = "NorthWind Customers";
myGrid.ReadOnly = true;
myGrid.AllowNavigation = false;
myGrid.PreferredColumnWidth = 150;

prevBtn.Text = "<<";
prevBtn.Size = new Size(48, 24);
prevBtn.Location = new Point(92, 240);
prevBtn.Click += new EventHandler(Prev_OnClick);

nextBtn.Text = ">>";
nextBtn.Size = new Size(48, 24);
nextBtn.Location = new Point(160, 240);

pageLbl.Text = "No Records Returned.";
pageLbl.Size = new Size(130, 16);
pageLbl.Location = new Point(218, 244);

this.Controls.Add(myGrid);
this.Controls.Add(prevBtn);
this.Controls.Add(nextBtn);
this.Controls.Add(pageLbl);
nextBtn.Click += new EventHandler(Next_OnClick);


// Populate DataSet with first page of records and bind to grid.
GetData("Default");
DataView custDV = new DataView(custTable, "", "CustomerID", DataViewRowState.CurrentRows);
myGrid.SetDataBinding(custDV, "");
}



public static void Prev_OnClick(object sender, EventArgs args)
{
GetData("Previous");
}

public static void Next_OnClick(object sender, EventArgs args)
{
GetData("Next");
}
}



public class Sample
{
static void Main()
{
Application.Run(new PagingSample());
}
}

分享到:
评论

相关推荐

    大数量查询分页显示 微软的解决办法

    大数量查询分页显示 微软的解决办法 在实际应用中,经常会遇到大数量查询分页显示的问题,微软提供了一些解决办法来解决这个问题。 标题解释 大数量查询分页显示是指在数据库中查询大量数据,并将其分页显示在界面...

    jQuery分页插件设置分页内容显示数量的分页代码

    本篇文章将详细讲解如何使用jQuery分页插件来设置分页内容显示的数量。 首先,我们需要选择一个适合的jQuery分页插件。有许多开源的选项可供选择,例如jQuery Pagination Plugin、jQuery UI Paginator、Bootstrap-...

    分页显示数据技术

    在IT行业中,分页显示数据是一项非常常见的技术,特别是在网页应用和大数据展示中。它能够有效地管理和呈现大量的信息,提高用户界面的响应速度,减轻服务器的负担,同时提供更好的用户体验。下面将详细介绍分页显示...

    SQLite 查询所有 分页查询 查询个数

    分页查询是只获取数据的一部分,通常用于滚动显示大量结果。在SQLite中,可以结合`LIMIT`和`OFFSET`关键字实现分页。假设你想获取第n页的数据,每页显示m条,那么查询语句如下: ```sql SELECT * FROM 表名 LIMIT m ...

    jsp数据库分页查询及显示

    分页查询的核心思想是:根据用户请求的当前页码和每页显示的数据数量,计算出需要从数据库中获取的数据范围,并返回这些数据给前端展示。 #### 三、实现步骤 ##### 1. 获取用户请求参数 首先,我们需要从用户的...

    ADO_ASP网站数据库查询分页显示

    ### ADO/ASP网站数据库查询分页显示 #### 一、引言 随着信息技术的快速发展,计算机、数据库和网络已经成为现代信息系统不可或缺的三大支柱。在这样的背景下,网站数据库的操作变得尤为重要。然而,随着数据库信息...

    ireport控制分页显示

    分页显示是指将大量的数据分成多个页面展示,每页显示固定数量的记录。这种技术在处理大量数据时尤其有用,因为它可以提高报表的可读性和性能。在iReport中,分页通过插入页面断点(Page Break)来实现,确保每页显示...

    java web分页显示

    在Java Web开发中,分页显示是一项非常重要的功能,它能有效地管理大量数据,提高用户体验,避免一次性加载过多数据导致的性能问题。本教程将详细讲解如何在SQL Server 2005数据库环境下,利用JDBC进行分页查询,以...

    使用JSP实现查询分页

    分页技术主要解决的是当数据量庞大时,一次性加载所有数据到页面会导致页面加载缓慢、内存消耗过大以及用户体验下降等问题。通过分页,可以将数据分成多个小块,每次只加载其中一部分,不仅提高了页面的响应速度,也...

    DW专业版本分页显示.

    在IT行业中,分页显示是一项常见的技术,尤其在数据量庞大的网页或应用中,它能够有效地提高用户体验,避免一次性加载过多的数据导致页面响应慢或内存消耗过大。标题和描述中的"DW专业版本分页显示"可能指的是...

    分页显示大量数据

    ### 分页显示大量数据 #### 知识点一:分页技术原理与应用背景 在软件开发特别是Web应用开发过程中,经常会遇到需要处理大量数据的情况。例如,在一个包含成千上万条记录的数据库表中进行查询时,一次性加载所有...

    用PHP实现分页显示

    为了解决这个问题,我们通常会采用分页显示的方式,将大量数据分成若干页进行加载。本教程将详细介绍如何用PHP实现分页显示。 一、理解分页原理 分页的基本原理是通过限制每次从数据库中查询的数据数量,然后根据...

    文件分页显示程序+报告

    在用户界面中,分页显示通常用于处理表格、文档或网页中的大量内容,通过限制每一页显示的数量来提高用户体验。 2. **汇编语言**:汇编语言是一种低级编程语言,它的指令与机器代码紧密对应。编写汇编程序需要对...

    千万数量级分页存储过程,可支持多表查询,任意排序

    本文详细介绍了如何设计一个能够支持千万数量级数据处理的分页存储过程,包括了多表查询的支持、任意排序功能的实现以及高效的数据获取策略等关键知识点。通过对这些技术点的理解和掌握,可以有效地提高数据库应用的...

    vc6.0 实现分页显示的源文件

    本资源提供的"vc6.0 实现分页显示的源文件"正是为了解决这个问题,它利用TabControl控件来实现分页效果。下面将详细阐述分页显示的原理、实现方法以及TabControl控件的相关知识。 1. 分页显示原理: 分页显示的基本...

    jsp分页显示 动态显示

    【标题】:“jsp分页显示 动态显示” 在网页应用开发中,分页是一种常见的数据展示策略,尤其是在处理大量数据时,它可以帮助用户更高效地浏览和查找所需信息。JSP(JavaServer Pages)是Java平台上的动态网页技术...

    分页显示源程序、源代码

    在IT行业中,分页显示是一种常见的数据展示技术,特别是在处理大量数据时,如数据库查询结果、源代码浏览等场景。本资源提供的是一个与Java相关的分页显示源代码,旨在帮助学习者理解和实现分页功能。Java作为一种多...

    JAVA和JSP分页显示实例

    在Java和JSP开发中,分页显示是常见的功能需求,尤其在处理大量数据时,为了提高用户体验,避免一次性加载所有数据导致页面响应慢或内存压力过大。本实例将介绍如何利用Java和JSP实现一个简单的分页显示功能。 首先...

    易语言源码access基本操作+通用分页显示

    在这个"易语言源码access基本操作+通用分页显示"的资源中,我们可以看到作者提供了一个易语言编写的程序,用于演示如何在Access数据库中进行基本操作,并实现通用的分页显示功能。 首先,我们要理解Access数据库的...

Global site tag (gtag.js) - Google Analytics