源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-07-05 21:21 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:大数量查询分页显示 微软的解决办法
微软的解决办法 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)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部