服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - ASP教程 - 大数量查询分页显示 微软的解决办法

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

2019-10-18 11:06asp代码网 ASP教程

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

微软的解决办法

  1. using System;   
  2. using System.Data;   
  3. using System.Data.SqlClient;   
  4. using System.Drawing;   
  5. using System.Windows.Forms;   
  6.  
  7. public class PagingSample: Form   
  8. {   
  9. // Form controls.   
  10. Button prevBtn = new Button();   
  11. Button nextBtn = new Button();   
  12.  
  13. static DataGrid myGrid = new DataGrid();   
  14. static Label pageLbl = new Label();   
  15.  
  16. // Paging variables.   
  17. static int pageSize = 10; // Size of viewed page.   
  18. static int totalPages = 0; // Total pages.   
  19. static int currentPage = 0; // Current page.   
  20. static string firstVisibleCustomer = ""// First customer on page to determine location for move previous.   
  21. static string lastVisibleCustomer = ""// Last customer on page to determine location for move next.   
  22.  
  23. // DataSet to bind to DataGrid.   
  24. static DataTable custTable;   
  25.  
  26. // Initialize connection to database and DataAdapter.   
  27. static SqlConnection nwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind");   
  28. static SqlDataAdapter custDA = new SqlDataAdapter("", nwindConn);   
  29. static SqlCommand selCmd = custDA.SelectCommand;   
  30.  
  31. public static void GetData(string direction)   
  32. {   
  33. // Create SQL statement to return a page of records.   
  34. selCmd.Parameters.Clear();   
  35.  
  36. switch (direction)   
  37. {   
  38. case "Next":   
  39. selCmd.CommandText = "SELECT TOP " + pageSize + " CustomerID, CompanyName FROM Customers " +   
  40. "WHERE CustomerID > @CustomerId ORDER BY CustomerID";   
  41. selCmd.Parameters.Add("@CustomerId", SqlDbType.VarChar, 5).Value = lastVisibleCustomer;   
  42. break;   
  43. case "Previous":   
  44. selCmd.CommandText = "SELECT TOP " + pageSize + " CustomerID, CompanyName FROM Customers " +   
  45. "WHERE CustomerID < @CustomerId ORDER BY CustomerID DESC";   
  46. selCmd.Parameters.Add("@CustomerId", SqlDbType.VarChar, 5).Value = firstVisibleCustomer;   
  47. break;   
  48. default:   
  49. selCmd.CommandText = "SELECT TOP " + pageSize + " CustomerID, CompanyName FROM Customers ORDER BY CustomerID";   
  50.  
  51. // Determine total pages.   
  52. SqlCommand totCMD = new SqlCommand("SELECT Count(*) FROM Customers", nwindConn);   
  53. nwindConn.Open();   
  54. int totalRecords = (int)totCMD.ExecuteScalar();   
  55. nwindConn.Close();   
  56. totalPages = (int)Math.Ceiling((double)totalRecords / pageSize);   
  57.  
  58. break;   
  59. }   
  60.  
  61. // Fill a temporary table with query results.   
  62. DataTable tmpTable = new DataTable("Customers");   
  63. int recordsAffected = custDA.Fill(tmpTable);   
  64.  
  65. // If table does not exist, create it.   
  66. if (custTable == null)   
  67. custTable = tmpTable.Clone();   
  68.  
  69. // Refresh table if at least one record returned.   
  70. if (recordsAffected > 0)   
  71. {   
  72. switch (direction)   
  73. {   
  74. case "Next":   
  75. currentPage++;   
  76. break;   
  77. case "Previous":   
  78. currentPage--;   
  79. break;   
  80. default:   
  81. currentPage = 1;   
  82. break;   
  83. }   
  84.  
  85. pageLbl.Text = "Page " + currentPage + " of " + totalPages;   
  86.  
  87. // Clear rows and add new results.   
  88. custTable.Rows.Clear();   
  89.  
  90. foreach (DataRow myRow in tmpTable.Rows)   
  91. custTable.ImportRow(myRow);   
  92.  
  93. // Preserve first and last primary key values.   
  94. DataRow[] ordRows = custTable.Select("""CustomerID ASC");   
  95. firstVisibleCustomer = ordRows[0][0].ToString();   
  96. lastVisibleCustomer = ordRows[custTable.Rows.Count - 1][0].ToString();   
  97. }   
  98. }   
  99.  
  100.  
  101.  
  102. public PagingSample()   
  103. {   
  104. // Initialize controls and add to form.   
  105. this.ClientSize = new Size(360, 274);   
  106. this.Text = "NorthWind Data";   
  107.  
  108. myGrid.Location = new Point(10,10);   
  109. myGrid.Size = new Size(340, 220);   
  110. myGrid.AllowSorting = true;   
  111. myGrid.CaptionText = "NorthWind Customers";   
  112. myGrid.ReadOnly = true;   
  113. myGrid.AllowNavigation = false;   
  114. myGrid.PreferredColumnWidth = 150;   
  115.  
  116. prevBtn.Text = "<<";   
  117. prevBtn.Size = new Size(48, 24);   
  118. prevBtn.Location = new Point(92, 240);   
  119. prevBtn.Click += new EventHandler(Prev_OnClick);   
  120.  
  121. nextBtn.Text = ">>";   
  122. nextBtn.Size = new Size(48, 24);   
  123. nextBtn.Location = new Point(160, 240);   
  124.  
  125. pageLbl.Text = "No Records Returned.";   
  126. pageLbl.Size = new Size(130, 16);   
  127. pageLbl.Location = new Point(218, 244);   
  128.  
  129. this.Controls.Add(myGrid);   
  130. this.Controls.Add(prevBtn);   
  131. this.Controls.Add(nextBtn);   
  132. this.Controls.Add(pageLbl);   
  133. nextBtn.Click += new EventHandler(Next_OnClick);   
  134.  
  135.  
  136. // Populate DataSet with first page of records and bind to grid.   
  137. GetData("Default");   
  138. DataView custDV = new DataView(custTable, """CustomerID", DataViewRowState.CurrentRows);   
  139. myGrid.SetDataBinding(custDV, "");   
  140. }   
  141.  
  142.  
  143.  
  144. public static void Prev_OnClick(object sender, EventArgs args)   
  145. {   
  146. GetData("Previous");   
  147. }   
  148.  
  149. public static void Next_OnClick(object sender, EventArgs args)   
  150. {   
  151. GetData("Next");   
  152. }   
  153. }   
  154.  
  155.  
  156.  
  157. public class Sample   
  158. {   
  159. static void Main()   
  160. {   
  161. Application.Run(new PagingSample());   
  162. }   
  163. }  

延伸 · 阅读

精彩推荐