PagerPanel






2.45/5 (4投票s)
2005年7月27日
3分钟阅读

35060

471
用于 Windows 窗体的简单数据分页控件。
引言
通常,我们需要向用户显示数据库中大型的表或视图列表。但是这样做会导致网络资源饱和(在分布式环境中)和用户界面崩溃。数据分页可以解决这个问题。它允许你以分段和有序的形式显示所有数据,从而更好地利用内存、网络资源并提高用户界面的响应速度。
PagerPanel 是一个简单的用户控件,允许我们在 Windows 窗体的任何列表控件中实现数据分页。PagerPanel 不在数据库中执行查询;它只显示相应的页面并生成访问它们的机制。
要求
为了使用 PagerPanel,我们必须有以下两件事
- 我们需要一个存储过程或方法,允许我们在数据库中进行分页查询,我们可以在其中定义要访问的页面和页面大小(每页显示的行数)。Jasmin Muharemovic 在这篇文章中对不同的存储过程方法进行了很好的数据分页分析。
- 我们还需要一个查询,提供关于查询结果中总页数的信息。这对于生成控件中的页面列表非常重要。
使用控件
PagerPanel 可以添加到 IDE 的工具箱中,并在设计时放置在窗体中。但是页面仅在运行时绘制。在设计时,绘制一个边缘以允许我们可视化其位置。
Private void PagerPanel_Paint(object sender,
System.Windows.Forms.PaintEventArgs e)
{
if(DesignMode)
{
Rectangle borderRect =
new Rectangle(this.ClientRectangle.Location,
this.ClientRectangle.Size);
borderRect.Width -= 1;
borderRect.Height -= 1;
e.Graphics.DrawRectangle(SystemPens.ControlDark,
borderRect);
}
方法 CreaNavegacion
生成查询返回的页面列表。此方法有两个参数 totalPages(int)
和 currentPage(int)
。参数 totalPages
表示查询返回的总页数,该页数在查询本身中获得。参数 currentPage
是我们要显示的页面。在我们的示例中,它用于启动新的查询。
private void btnSearch_Click(object sender,
System.EventArgs e)
{
...
this.panel.CreaNavigacion(Busca(1),1);
}
我的窗体中的 Busca
方法用于获取特定页面的查询,并在 DataGrid
控件中显示它,此外,它还返回查询返回的页数,这对于在 PagerPanel 中生成页面是必需的。
第二步是实现 OnPanelLinkClicked
事件,当用户单击控件创建的任何链接或页面时,将执行此事件。此事件通过参数为我们提供所选的页面,这是我们必须在数据库中查询的页面。在我们的示例中,我们通过以下方式执行此操作
private void OnPanelLinkClicked(object sender,
PagerPanel.PagerPanel.PanelLinkClickedEventArgs e)
{
this.panel.TotalPages = Busca(e.Page);
}
注意:要运行演示项目,您必须编译源代码附带的 spDataPaging
存储过程脚本。
关注点
PageBuffer
属性允许我们定义面板每次将显示的页数。如果 PageBuffer
小于查询结果中的页数,则将显示此符号 << < > >> 以用于列表中页面的导航。此属性的默认值为 10,但可以根据我们的要求进行修改。此外,LinkSpace
属性允许我们定义导航器中每个链接之间的空间。
LinkColor
属性定义控件中显示的链接或页面的颜色。
我希望这个控件对您有用。欢迎随意自定义它并在您的项目中使用它。
历史
- 2005/07/27 - 1.0.0.1 - 初始版本。