大数量查询分页显示 微软的解决办法_应用技巧

微软的解决办法

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



时间: 2025-01-20 12:44:36

大数量查询分页显示 微软的解决办法_应用技巧的相关文章

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

分页|解决|微软|显示|分页|微软 微软的解决办法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();

ASP.net Menu控件在Google Chrome和Safari浏览器下显示错位的解决办法_实用技巧

复制代码 代码如下: <browsers> <browser id="Safari3" parentID="Safari1Plus"> <identification> <useragent match="Safari/\d+\.\d+" /> </identification> <capture> <useragent match="Version/(?'v

ASP中实现分页显示的七种方法_应用技巧

在微软的ASP编程体系中,ADO对象的建立,使得从网页访问数据库成为一件易事,特别是ADO的Recordset对象使得控制数据的输出显示更为方便.自由.而在Visual InterDev6.0(以下简称VI6.0)中,由于Script Object Model(以下简称SOM).Design-Time Control(以下简称DTC)以及Data Environment Object Model(以下简称DEOM)等对象模型的引入,使网页对数据库的访问设计显得更为方便. 因为主题方面的原因,关于

vs.Net2003无法打开或创建Web应用程序若干解决办法._实用技巧

昨天到今天搞了一整天,把人都要差点搞崩了! ,以后再也不能乱关机了,因为这次的大意,几乎所有的Net安装,调试问题都被我碰到了,还好,我一个个把他记录下来了,同时,在CSDN找了一些相关的解决方法,不敢独享,供大家相互学习交流之用. 起因是这样的,机子运行IE时假死,我用着不爽,就二话不说热启动,结果就出事了. 重新打开正在Vs2003.Net里面正在作的项目时,老半天没反应,机子变得异常慢,当然,出于职业的敏感,马上来了个Ctrl+Alt+Del,这下不好,CPU占用100%,一直高居不下,运

iframe跨域与session失效问题的解决办法_实用技巧

何为跨域跨域session/cookie? 也就是第三方session/cookie.第一方session/cookie指的是访客当前访问的网站给访客的浏览器设置的seesion /cookie, 会被存储在访客的计算机上.第三方session/cookie指的是当前访问的网站中会加载(嵌入)另外第三方的网站代码,例如促销广告,那么第三方网 站也会在访客的计算机上添加session/cookie,这种就是第三方session/cookie. 我的问题 在开发讯息在线产品(http://iap.p

IIS7.5调用asp页面出现800a0e7a的解决办法_应用技巧

在IIS6下面是没这个问题的,把系统放到IIS7.5下windows2008R2 64位系统就出现了ADODB.Connection 错误 '800a0e7a',下面给出详细的解决办法,其实很简单. 复制代码 代码如下: ADODB.Connection 错误 '800a0e7a' 未找到提供程序.该程序可能未正确安装. /hua1/manage/inc/conn.asp,行 8 咋一看貌似是数据库连接的问题,但是我反复看了数据库的连接代码没有错误:接下来就换到自己的机器上运行网站,程序运行正常

asp.net中“从客户端中检测到有潜在危险的Request.Form值”错误的解决办法_实用技巧

在提交表单时候,asp.net 提示:"从客户端(......)中检测到有潜在危险的 Request.Form 值" .asp.net中的请求验证特性提供了某一等级的保护措施防止XSS攻击,asp.net的请求验证是默认启动的. 这里给出不同版本.net的解决方法. asp.net 2.0 通常解决办法 方案一: 将.aspx文件中的page项添加ValidateRequest="false" ,如下: <%@ Page ValidateRequest=&qu

ASP.NET The system cannot find the file specified解决办法_实用技巧

ASP.NET The system cannot find the file specified解决办法 Server Error in '/' Application. The system cannot find the file specified Description: An unhandled exception occurred during the execution of the current web request. Please review the stack tra

ASP:ActiveX不能创建Scripting.FileSystemObject对象解决办法_应用技巧

今天遇到个问题,一个ASP网站生成静态页面时报错: Microsoft VBScript 运行时错误 错误 '800a01ad' ActiveX 部件不能创建对象: 'Scripting.FileSystemObject' 其实这个问题比较常见,报错原因是服务器不支持FSO组件.像风讯.科汛.动易这些ASP的主流CMS系统中经常会遇到这种情况,因为他们都是采取静态生成机制的,需要FSO组件支持.在开始之前,你有必要先用ASP探针测试下服务器对FSO组件的支持情况,通常我们使用的是Windows