Commit 5a4fe92a HZH

修改分页控件算法

1 个父辈 eeada1a9
...@@ -65,6 +65,8 @@ namespace HZH_Controls.Controls.List ...@@ -65,6 +65,8 @@ namespace HZH_Controls.Controls.List
public override void FirstPage() public override void FirstPage()
{ {
if (PageIndex == 1)
return;
PageIndex = 1; PageIndex = 1;
StartIndex = (PageIndex - 1) * PageSize; StartIndex = (PageIndex - 1) * PageSize;
ReloadPage(); ReloadPage();
...@@ -77,7 +79,12 @@ namespace HZH_Controls.Controls.List ...@@ -77,7 +79,12 @@ namespace HZH_Controls.Controls.List
public override void PreviousPage() public override void PreviousPage()
{ {
if (PageIndex <= 1)
{
return;
}
PageIndex--; PageIndex--;
StartIndex = (PageIndex - 1) * PageSize; StartIndex = (PageIndex - 1) * PageSize;
ReloadPage(); ReloadPage();
var s = GetCurrentSource(); var s = GetCurrentSource();
...@@ -89,6 +96,10 @@ namespace HZH_Controls.Controls.List ...@@ -89,6 +96,10 @@ namespace HZH_Controls.Controls.List
public override void NextPage() public override void NextPage()
{ {
if (PageIndex >= PageCount)
{
return;
}
PageIndex++; PageIndex++;
StartIndex = (PageIndex - 1) * PageSize; StartIndex = (PageIndex - 1) * PageSize;
ReloadPage(); ReloadPage();
...@@ -101,6 +112,8 @@ namespace HZH_Controls.Controls.List ...@@ -101,6 +112,8 @@ namespace HZH_Controls.Controls.List
public override void EndPage() public override void EndPage()
{ {
if (PageIndex == PageCount)
return;
PageIndex = PageCount; PageIndex = PageCount;
StartIndex = (PageIndex - 1) * PageSize; StartIndex = (PageIndex - 1) * PageSize;
ReloadPage(); ReloadPage();
...@@ -128,35 +141,66 @@ namespace HZH_Controls.Controls.List ...@@ -128,35 +141,66 @@ namespace HZH_Controls.Controls.List
{ {
ControlHelper.FreezeControl(tableLayoutPanel1, true); ControlHelper.FreezeControl(tableLayoutPanel1, true);
List<int> lst = new List<int>(); List<int> lst = new List<int>();
if (PageCount > 0)
if (PageCount <= 9)
{
for (var i = 1; i <= PageCount; i++)
{
lst.Add(i);
}
}
else
{ {
if (PageCount <= 7) if (this.PageIndex <= 6)
{
for (var i = 1; i <= 7; i++)
{
lst.Add(i);
}
lst.Add(-1);
lst.Add(PageCount);
}
else if (this.PageIndex > PageCount - 6)
{ {
for (int i = 0; i < PageCount; i++) lst.Add(1);
lst.Add(-1);
for (var i = PageCount - 6; i <= PageCount; i++)
{ {
lst.Add(i + 1); lst.Add(i);
} }
} }
else else
{ {
int start = PageIndex; //开始按钮数字 lst.Add(1);
int end = 1; //结束按钮数字 lst.Add(-1);
int pageCount = PageCount; //总页数 var begin = PageIndex - 2;
int offset = 3; //偏移量 var end = PageIndex + 2;
if (end > PageCount)
start -= offset;//计算左偏移量 {
start = start < 1 ? 1 : start;//限定最小页码 end = PageCount;
end = start + 7 - 1;//根据偏移计算结束按钮 begin = end - 4;
end = end > pageCount ? pageCount : end;//限定最大页码 if (PageIndex - begin < 2)
start = end - 7 + 1;//根据偏移计算开始页码 {
start = start < 1 ? 1 : start;//限定最小页码 begin = begin - 1;
for (int i = start; i <= end; i++) }
}
else if (end + 1 == PageCount)
{
end = PageCount;
}
for (var i = begin; i <= end; i++)
{ {
lst.Add(i); lst.Add(i);
} }
if (end != PageCount)
{
lst.Add(-1);
lst.Add(PageCount);
}
} }
} }
for (int i = 0; i < 7; i++)
for (int i = 0; i < 9; i++)
{ {
UCBtnExt c = (UCBtnExt)this.tableLayoutPanel1.Controls.Find("p" + (i + 1), false)[0]; UCBtnExt c = (UCBtnExt)this.tableLayoutPanel1.Controls.Find("p" + (i + 1), false)[0];
if (i >= lst.Count) if (i >= lst.Count)
...@@ -165,7 +209,16 @@ namespace HZH_Controls.Controls.List ...@@ -165,7 +209,16 @@ namespace HZH_Controls.Controls.List
} }
else else
{ {
c.BtnText = lst[i].ToString(); if (lst[i] == -1)
{
c.BtnText = "...";
c.Enabled = false;
}
else
{
c.BtnText = lst[i].ToString();
c.Enabled = true;
}
c.Visible = true; c.Visible = true;
if (lst[i] == PageIndex) if (lst[i] == PageIndex)
{ {
......
...@@ -92,7 +92,7 @@ namespace Test ...@@ -92,7 +92,7 @@ namespace Test
List<object> lstPage2 = new List<object>(); List<object> lstPage2 = new List<object>();
for (int i = 0; i < 1000; i++) for (int i = 0; i < 100; i++)
{ {
lstPage2.Add(i); lstPage2.Add(i);
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!