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

微软的解决办法

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());

}

}

(0)

相关推荐

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

    微软的解决办法 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 

  • Java分页查询--分页显示(实例讲解)

    当数据库中数据条数过多时,一个页面就不能显示,这是要设置分页查询,首先要使用的是数据库sql语句的limit条件实现分组查询 sql语句大概形式为: select * from table limit 开始索引,显示条数 用该语句就会实现分块查询,并且每页显示固定条数. 首先要实现后台分页,我们需要知道它有多少页,每页有多少行,这就需要知道一共多少行,调用sql语句时还需要知道每一页的开始索引,开始索引是根据当前页数算出来的,所以还需要知道当前页数,查询后会返回一个列表存储当前页数据.将这些属性

  • mysql一对多关联查询分页错误问题的解决方法

    xml问价中查询数据中包含list,需要使用collection <resultMap id="XX" type="com.XXX.XXXX"> <id column="o_id" jdbcType="BIGINT" property="id" /> <result column="o_user_id" jdbcType="BIGINT"

  • jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法

    如果版本是: 1.3.1 IE无法显示关闭按钮 如果版本是: 1.3.4 IE6无法显示关闭按钮 解决办法: Version: 1.3.1 打开fancybox.css 注释掉此行: .fancybox-ie #fancybox-close { background: transparent; filter: progid : DXImageTransform.Microsoft.AlphaImageLoader ( src = 'images/fancy_close.png', sizingM

  • 有关easyui-layout中的收缩层无法显示标题的解决办法

    easyui-layout中的收缩层无法显示标题的问题原因分析: 在easyui-layout中设置面板初始化为可以折叠,然后就发现标题还有图标都木有了 嗯,就是结果列表上面.一片空白,出现了问题就要去解决它,在网上查了资料之后呢,决定修改jquery.easyui.min.js 版本为:jQuery EasyUI 1.4.1 在5105行有_39d方法,在其中设置两个变量_Cstitle,_CsIcon添加代码如下: var _Cstitle; var _closedTitle = p.pan

  • BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法

    bootstrap 图标icon符号图标glyphicons不正常显示解决办法如下所示: 分享供各位参考: 1.在ff/http:的地址栏中输入"about:config",即进入配置界面. 2.进入后,搜索"security.fileuri.strict_origin_policy",这是该值应该是true. 3.双击该项,其值自动变为false,即可. 4.修改后,再刷新遇到问题的页面,即可看到正常显示的图标了. 探究问题原因: 1.由于ff/http:一个安全

  • el-tree文字显示不全的解决办法

    目录 方法一: 最简单的设置横向滚动条 方法二(新): 添加拖拽条改变外层容器宽度 方法二(老): 添加拖拽条改变外层容器宽度 方法三: 通过...表示 鼠标移上去显示全称 使用element ui的树组件el-tree时,经常出现如下问题: el-tree渲染时因为文字内容长度不一致,导致过长的文字无法显示完全. 经尝试发现如下三种解决方法,推荐方法三. 方法一: 最简单的设置横向滚动条 效果: 在当前树节点的span标签上设置样式 overflow: auto; // 或者 overflow

  • MySQL占用内存较大与CPU过高测试与解决办法

    更改后如下: innodb_buffer_pool_size=576M ->256M InnoDB引擎缓冲区占了大头,首要就是拿它开刀 query_cache_size=100M ->16M 查询缓存 tmp_table_size=102M ->64M 临时表大小 key_buffer_size=256m ->32M 重启mysql服务后,虚拟内存降到200以下. 另外mysql安装目录下有几个文件:my-huge.ini .my-large.ini.my-medium.ini..

  • mysql中RAND()随便查询记录效率问题和解决办法分享

    最近由于需要大概研究了一下MYSQL的随机抽取实现方法.举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1. 有两个方法可以达成以上效果. 1.新建一个表,里面存着 -5 至 5 之间的数.再利用order by rand()得到随机数. #建立指定范围数据表 复制代码 代码如下: #auther: 小强(占卜师) #date: 2008-03-31 create table r

  • jquery fancybox ie6不显示关闭按钮的解决办法

    解决办法: 打开jquery.fancybox-1.3.4.css 注释掉这行就行了: 复制代码 代码如下: .fancybox-ie6 #fancybox-close   {      background: transparent;      filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_close.png', sizingMethod='scale');   }

随机推荐