DevExpress中实现GridControl的分页功能

本文详细介绍了在DevExpress中实现GridControl分页功能的方法,包括界面层的配置,如设置DataNavigator控件属性和自定义按钮,代码层的逻辑处理,如页行数、当前页、总页数的定义及分页事件处理,以及数据库操作,如获取记录总数和分页获取数据列表。通过示例代码展示了完整的分页流程。
摘要由CSDN通过智能技术生成

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.定义变量

  1.  
    //页行数
  2.  
    public int pagesize = 20;
  3.  
    //当前页
  4.  
    public int pageIndex = 1;
  5.  
    //总页数
  6.  
    public int pageCount;

2.定义方法

  1.  
    /// <summary>
  2.  
    /// 绑定分页控件和GridControl数据
  3.  
    /// </summary>
  4.  
    /// <author>PengZhen</author>
  5.  
    /// <time>2013-11-5 14:22:22</time>
  6.  
    /// <param name="strWhere">查询条件</param>
  7.  
    public void BindPageGridList(string strWhere)
  8.  
    {
  9.  
    SystemOperateLog objSOL = new BLL.SystemOperateLog();
  10.  
     
  11.  
    nvgtDataPager.Buttons.CustomButtons[ 0].Enabled = true;
  12.  
    nvgtDataPager.Buttons.CustomButtons[ 1].Enabled = true;
  13.  
    nvgtDataPager.Buttons.CustomButtons[ 2].Enabled = true;
  14.  
    nvgtDataPager.Buttons.CustomButtons[ 3].Enabled = true;
  15.  
    //记录获取开始数
  16.  
    int startIndex = (pageIndex - 1) * pagesize + 1;
  17.  
    //结束数
  18.  
    int endIndex = pageIndex * pagesize;
  19.  
     
  20.  
    //总行数
  21.  
    int row = objSOL.GetRecordCount(strWhere);
  22.  
     
  23.  
    //获取总页数
  24.  
    if (row % pagesize > 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值