DevExpress中GridControl的分页显示方法
在网上搜索了下,大多使用自定义方法去计算实现,其实DevExpress提供了分页控件XPPageSelector和导航控件DataNavigator可以很方便地实现分页及导航控制。

添加控件
这里我用到了XPCollection、PageSelector、DataNavigator
- XPCollection用于绑定数据源
- PageSelector的Collection绑定XPCollection,PageSize用于指定一页中多少个数据
- DataNavigator的DataSource选定PageSelector


添加切换页按钮及事件
DataNavigator里默认的按钮我没有试出怎么用来,当更新数据源时,无法切换,因此先将其Bottons中选择相应按钮并隐藏掉(见上图第1行的属性),然后添加自己的按钮后就应用正常了。
事件代码
//选择不同树节点时,切换不同的数据源
xpcParts = new XPCollection(typeof(Part), CriteriaOperator.Parse("PartNode.Oid=?", e.Node.GetValue("Oid")));
xpPartsPageSelector = new XPPageSelector(xpcParts);
xpPartsPageSelector.PageSize = 10;
dataNav.DataSource = xpPartsPageSelector;
gdcPart.DataSource = xpPartsPageSelector;
dataNav.TextStringFormat = $"第 {xpPartsPageSelector.CurrentPage + 1} 页 共 {xpPartsPageSelector.PageCount} 页";
gdvPart.RefreshData();
//点击各导航按钮时,切换不同的页
private void dataNavigator1_ButtonClick(object sender, NavigatorButtonClickEventArgs e)
{
switch (e.Button.Hint)
{
case "第1页":
xpPartsPageSelector.CurrentPage = 0;
dataNav.TextStringFormat = $"第 {xpPartsPageSelector.CurrentPage + 1} 页 共 {xpPartsPageSelector.PageCount} 页";
break;
case "上一页":
if (xpPartsPageSelector.CurrentPage > 1)
{
xpPartsPageSelector.CurrentPage--;
dataNav.TextStringFormat = $"第 {xpPartsPageSelector.CurrentPage + 1} 页 共 {xpPartsPageSelector.PageCount} 页";
}
break;
case "下一页":
if (xpPartsPageSelector.CurrentPage < xpPartsPageSelector.PageCount - 1)
{
xpPartsPageSelector.CurrentPage++;
dataNav.TextStringFormat = $"第 {xpPartsPageSelector.CurrentPage + 1} 页 共 {xpPartsPageSelector.PageCount} 页";
}
break;
case "最后一页":
xpPartsPageSelector.CurrentPage = xpPartsPageSelector.PageCount - 1;
dataNav.TextStringFormat = $"第 {xpPartsPageSelector.CurrentPage + 1} 页 共 {xpPartsPageSelector.PageCount} 页";
break;
}
}
希望可以帮到你!

浙公网安备 33010602011771号