PageToolBar.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. namespace Azylee.WinformSkin.UserWidgets.PageWidgets
  10. {
  11. public partial class PageToolBar : SuperUserControl
  12. {
  13. public delegate void PageDataProvider(object sender, PageDataProviderArgs e);
  14. PageDataProvider Provider;
  15. int PageIndex = 0;
  16. int PageTotal = 0;
  17. int PageSize = 0;
  18. int DataCount = 0;
  19. bool IsInit = false;
  20. public PageToolBar()
  21. {
  22. InitializeComponent();
  23. }
  24. private void PageToolBar_Load(object sender, EventArgs e)
  25. {
  26. }
  27. #region 初始化和修改参数
  28. public void Init(PageDataProvider provider, int pageIndex, int dataCount, int pageSize)
  29. {
  30. if (!DesignMode)
  31. {
  32. if (!IsInit)
  33. {
  34. Provider += provider;
  35. PageIndex = pageIndex;
  36. PageSize = pageSize;
  37. DataCount = dataCount;
  38. PageTotal = DataCount % pageSize == 0 ? DataCount / pageSize : (DataCount / pageSize) + 1;
  39. IsInit = true;
  40. }
  41. }
  42. }
  43. public void Init(PageDataProvider provider, int pageIndex, int pageSize)
  44. {
  45. Init(provider, pageIndex, pageSize, pageSize);
  46. }
  47. /// <summary>
  48. /// 更新数据总数和页总数
  49. /// </summary>
  50. /// <param name="dataCount"></param>
  51. public void SetDataCount(int dataCount)
  52. {
  53. if (!DesignMode)
  54. {
  55. DataCount = dataCount;
  56. PageTotal = DataCount % PageSize == 0 ? DataCount / PageSize : (DataCount / PageSize) + 1;
  57. if (PageIndex > PageTotal) PageIndex = 1;
  58. if (PageTotal == 0) PageTotal = 1;
  59. if (!ParentForm.IsDisposed)
  60. {
  61. ParentForm.Invoke(new Action(() =>
  62. {
  63. //调整控件展示界面(第几页,共几页)
  64. LBPageDesc.Text = string.Format("第 {0} 页,共 {1} 页", PageIndex, PageTotal);
  65. }));
  66. }
  67. }
  68. }
  69. #endregion
  70. #region 操作
  71. /// <summary>
  72. /// 加载第一页
  73. /// </summary>
  74. public void ReadFirstPage()
  75. {
  76. if (!DesignMode)
  77. {
  78. PageIndex = 1;
  79. QueryPageData(new PageDataProviderArgs(PageIndex, PageSize));
  80. }
  81. }
  82. /// <summary>
  83. /// 加载默认页(或刷新)
  84. /// </summary>
  85. public void ReadDefaultPage()
  86. {
  87. if (!DesignMode)
  88. {
  89. PageIndex = PageIndex >= 1 ? PageIndex : 1;
  90. QueryPageData(new PageDataProviderArgs(PageIndex, PageSize));
  91. }
  92. }
  93. public void Clear()
  94. {
  95. PageIndex = 1;
  96. Invoke(new Action(() =>
  97. {
  98. LBPageDesc.Text = "第 1 页,共 1 页";
  99. }));
  100. }
  101. #endregion
  102. #region 快速跳转按钮
  103. private void BTPageUpFirst_Click(object sender, EventArgs e)
  104. {
  105. PageIndex = 1;
  106. QueryPageData(new PageDataProviderArgs(PageIndex, PageSize));
  107. }
  108. private void BTPageUpOne_Click(object sender, EventArgs e)
  109. {
  110. PageIndex = PageIndex <= 1 ? 1 : PageIndex - 1;
  111. QueryPageData(new PageDataProviderArgs(PageIndex, PageSize));
  112. }
  113. private void BTPageDownOne_Click(object sender, EventArgs e)
  114. {
  115. PageIndex = PageIndex >= PageTotal ? PageTotal : PageIndex + 1;
  116. QueryPageData(new PageDataProviderArgs(PageIndex, PageSize));
  117. }
  118. private void BTPageDownLast_Click(object sender, EventArgs e)
  119. {
  120. PageIndex = PageTotal;
  121. QueryPageData(new PageDataProviderArgs(PageIndex, PageSize));
  122. }
  123. #endregion
  124. #region 获取数据
  125. private void QueryPageData(PageDataProviderArgs args)
  126. {
  127. Provider?.Invoke(this, args);
  128. //if (dataCount != null) SetDataCount(dataCount.Value);
  129. }
  130. #endregion
  131. }
  132. }