DevExpress中如何实现GridControl的分页功能
简介:DevExpress中如何实现GridControl的分页功能,
主要是利用DataNavigator和GridControl组合,自定义事件实现分页功能
接下来,我们就去实现分页功能,先看下效果图:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
整个分页操作,基本分三步:
一:界面层
二:代码层
三:数据库
四:调用
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一:界面层,如图:
说明:放入一个GridControl控件(gridLogList)和DataNavigator控件(nvgtDataPager),给GridControl绑定好列,
设置DataNavigator控件属性Dock=Bottom;TextLocation=Center;TextStringFormat=第 {0}页 ,共 {1};
ShowToolTips=true;
在DataNavigator控件属性Buttons --> CustomButtons (集合) 在右侧点击按钮,打开自定义按钮对话框,如下图:
点击Add按钮,添加4个自定义按钮,分别为每一个按钮设置:
ImageIndex属性:设置显示的样式,自己根据功能设按钮样式
Tag属性:用于判断点击的按钮,四个按钮分别设置:首页:f;上一页:p;下一页:n;最后一页:l
将下图中圈中的按钮属性visible=False; 如图:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
最主要的设置DataNavigator控件的ButtonClick事件,下面是我自己在项目中用到的,作为参考,
private void dataNavigator1_ButtonClick(object sender, DevExpress.XtraEditors.NavigatorButtonClickEventArgs e) { PageInfo pageInfo = dataNavigator1.Tag as PageInfo; if (pageInfo != null) { //首页 if ((e.Button).ButtonType == DevExpress.XtraEditors.NavigatorButtonType.Custom && e.Button.Tag.ToString() == "f") { pageInfo.CurrentPage = 1; } //上一页 if ((e.Button).ButtonType == DevExpress.XtraEditors.NavigatorButtonType.Custom && e.Button.Tag.ToString() == "p") { if (pageInfo.HasPrevious == true) pageInfo.CurrentPage--; } //下一页 if ((e.Button).ButtonType == DevExpress.XtraEditors.NavigatorButtonType.Custom && e.Button.Tag.ToString() == "n") { if (pageInfo.HasNext == true) pageInfo.CurrentPage++; } //最后一页 if ((e.Button).ButtonType == DevExpress.XtraEditors.NavigatorButtonType.Custom && e.Button.Tag.ToString() == "l") { pageInfo.CurrentPage = pageInfo.TotalPages; } } QueryCriteria();//按条件执行查询 }
也 可以参考下面的代码
二:代码层
1.定义变量
-
//页行数
-
public int pagesize = 20;
-
//当前页
-
public int pageIndex = 1;
-
//总页数
-
public int pageCount;
2.定义方法
-
/// <summary>
-
/// 绑定分页控件和GridControl数据
-
/// </summary>
-
/// <author>PengZhen</author>
-
/// <time>2013-11-5 14:22:22</time>
-
/// <param name="strWhere">查询条件</param>
-
public void BindPageGridList(string strWhere)
-
{
-
SystemOperateLog objSOL = new BLL.SystemOperateLog();
-
-
nvgtDataPager.Buttons.CustomButtons[ 0].Enabled = true;
-
nvgtDataPager.Buttons.CustomButtons[ 1].Enabled = true;
-
nvgtDataPager.Buttons.CustomButtons[ 2].Enabled = true;
-
nvgtDataPager.Buttons.CustomButtons[ 3].Enabled = true;
-
//记录获取开始数
-
int startIndex = (pageIndex - 1) * pagesize + 1;
-
//结束数
-
int endIndex = pageIndex * pagesize;
-
-
//总行数
-
int row = objSOL.GetRecordCount(strWhere);
-
-
//获取总页数
-
if (row % pagesize > 0