前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数量查询分页显示

大数量查询分页显示

作者头像
Java架构师必看
发布2020-09-30 10:23:54
1.2K0
发布2020-09-30 10:23:54
举报
文章被收录于专栏:Java架构师必看

微软的解决办法usingSystem;usingSystem.Data;usingSyst运维

微软的解决办法

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档