DevExpress中如何实现GridControl的分页功能

DevExpress中如何实现GridControl的分页功能

简介:DevExpress中如何实现GridControl的分页功能,

        主要是利用DataNavigator和GridControl组合,自定义事件实现分页功能

        接下来,我们就去实现分页功能,先看下效果图:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

整个分页操作,基本分三步:

一:界面层

二:代码层

三:数据库

四:调用

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

一:界面层,如图:

 

说明:放入一个GridControl控件(gridLogList)和DataNavigator控件(nvgtDataPager),给GridControl绑定好列,

        设置DataNavigator控件属性Dock=Bottom;TextLocation=Center;TextStringFormat=第 {0}页 ,共 {1};

        ShowToolTips=true;将下图中圈中的按钮属性visible=False;

如图:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

二:代码层

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)
            {
                pageCount = row / pagesize + 1;
            }
            else
            {
                pageCount = row / pagesize;
            }

            if (pageIndex == 1)
            {
                nvgtDataPager.Buttons.CustomButtons[0].Enabled = false;
                nvgtDataPager.Buttons.CustomButtons[1].Enabled = false; ;
            }

            //最后页时获取真实记录数
            if (pageCount == pageIndex)
            {
                endIndex = row;
                nvgtDataPager.Buttons.CustomButtons[2].Enabled = false;
                nvgtDataPager.Buttons.CustomButtons[3].Enabled = false;
            }

            //分页获取数据列表
            DataTable dt = objSOL.GetListByPage(strWhere, "", startIndex, endIndex).Tables[0];

            gridLogList.DataSource = dt;

            nvgtDataPager.DataSource = dt;
            nvgtDataPager.TextStringFormat = string.Format("第 {0}页, 共 {1}页", pageIndex, pageCount);
        }

3.定义事件

        /// <summary>
        /// 按钮点击事件
        /// </summary>
        /// <author>PengZhen</author>
        /// <time>2013-11-5 14:24:25</time>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void nvgtDataPager_ButtonClick(object sender, NavigatorButtonClickEventArgs e)
        {
            ShowEvent("ButtonClick", e.Button);
        }
        
        /// <summary>
        /// 分页事件处理
        /// </summary>
        /// <param name="eventString">事件名称</param>
        /// <param name="button">按钮控件</param>
        /// <author>PengZhen</author>
        /// <time>2013-11-5 14:25:59</time>
        void ShowEvent(string eventString, NavigatorButtonBase button)
        {
            //string type = button.ButtonType.ToString();
            NavigatorCustomButton btn = (NavigatorCustomButton)button;
            string type = btn.Tag.ToString();
            if (type == "首页")
            {
                pageIndex = 1;
            }

           if (type=="下一页")
	        {
                pageIndex++;
	        } 

            if (type=="末页")
	        {
                pageIndex = pageCount;
	        }

            if (type == "上一页")
	        {
                pageIndex--;
	        }

            //绑定分页控件和GridControl数据
            BindPageGridList(strWhere);
        }

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

三:数据库

        /// <summary>
        /// 获取记录总数
        /// </summary>
        public int GetRecordCount(string strWhere)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("select count(1) FROM TL_SYSTEM_OPERATE_LOGS ");
            if (strWhere.Trim() != "")
            {
                strSql.Append(" where " + strWhere);
            }
            object obj = _DbHelperOra.GetSingle(strSql.ToString());
            if (obj == null)
            {
                return 0;
            }
            else
            {
                return Convert.ToInt32(obj);
            }
        }
        /// <summary>
        /// 分页获取数据列表
        /// </summary>
        public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("SELECT * FROM ( ");
            strSql.Append(" SELECT ROW_NUMBER() OVER (");
            if (!string.IsNullOrEmpty(orderby.Trim()))
            {
                strSql.Append("order by T." + orderby);
            }
            else
            {
                strSql.Append("order by T.ID desc");
            }
            strSql.Append(")AS Rowssss, T.*  from TL_SYSTEM_OPERATE_LOGS T ");
            if (!string.IsNullOrEmpty(strWhere.Trim()))
            {
                strSql.Append(" WHERE " + strWhere);
            }
            strSql.Append(" ) TT");
            strSql.AppendFormat(" WHERE TT.Rowssss between {0} and {1}", startIndex, endIndex);
            return _DbHelperOra.Query(strSql.ToString());
        }

说明:数据库的操作只作为借鉴,请根据自己的表做相应的修改

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

四:调用

如文章开头第一张效果图所述,当我就行查询操作时,也就是调用分页和绑定数据,需要做的操作,如下:

        //查询条件
        private static string strWhere = string.Empty;
        
        /// <summary>
        /// 查询
        /// </summary>
        /// <author>PengZhen</author>
        /// <time>2013-10-30 11:08:03</time>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btSelect_Click(object sender, EventArgs e)
        {
            //获取查询条件
            strWhere = GetSqlWhere();

            BindPageGridList(strWhere);
        }

        /// <summary>
        /// 获取查询条件
        /// </summary>
        /// <author>PengZhen</author>
        /// <time>2013-11-5 15:25:00</time>
        /// <returns>返回查询条件</returns>
        private string GetSqlWhere()
        {
            //查询条件
            string strReturnWhere = string.Empty;

            //用户编号
            string strUserId = string.Empty;

            if (!string.IsNullOrEmpty(UserManage.UserID))
            {
                strUserId = "12";// UserManage.UserID;
            }
            //分系统编码
            string strSubSystemCode = string.Empty;

            if (cbbSubSystemCode.SelectedItem != null)
            {
                strSubSystemCode = (cbbSubSystemCode.SelectedItem as ComboBoxData).Value;
            }

            //功能模块
            string strFunctionModule = string.Empty;

            if (cbbFunctionModule.SelectedItem != null)
            {
                strFunctionModule = (cbbFunctionModule.SelectedItem as ComboBoxData).Value;
            }

            //数据分类
            string strDataType = string.Empty;

            if (tcbDataType.SelectedNode != null)
            {
                strDataType = tcbDataType.SelectedNode.Name;
            }

            //操作类型
            string strOperatedType = string.Empty;

            if (cbbOperatedType.SelectedItem != null)
            {
                strOperatedType = (cbbOperatedType.SelectedItem as ComboBoxData).Value;
            }
            //开始时间
            string strStartTime = string.Empty;

            if (!string.IsNullOrEmpty(dateStartTime.Text))
            {
                strStartTime = dateStartTime.Text;
            }
            //结束时间
            string strEndTime = string.Empty;

            if (!string.IsNullOrEmpty(dateEndTime.Text))
            {
                strEndTime = dateEndTime.Text;
            }            

            //用户ID
            if (!string.IsNullOrEmpty(strUserId))
            {
                strReturnWhere += "USER_ID='" + strUserId + "' and";
            }
            //分系统代码
            if (!string.IsNullOrEmpty(strSubSystemCode))
            {
                strReturnWhere += "SYSTEM_CODE='" + strSubSystemCode + "' and";
            }
            //模块编号
            if (!string.IsNullOrEmpty(strFunctionModule))
            {
                strReturnWhere += "MODULE_ID='" + strFunctionModule + "' and";
            }
            //数据分类代码
            if (!string.IsNullOrEmpty(strDataType))
            {
                strReturnWhere += "DATA_CATAGORY_CODE='" + strDataType + "' and";
            }
            //操作类型
            if (!string.IsNullOrEmpty(strOperatedType))
            {
                strReturnWhere += "OPERATE_TYPE='" + strOperatedType + "' and";
            }
            //操作时间
            if (!string.IsNullOrEmpty(strStartTime) && !string.IsNullOrEmpty(strEndTime))
            {
                strReturnWhere += "OPERATE_DATE between '" + strStartTime + "' and '" + strEndTime + "'";
            }

            if (!string.IsNullOrEmpty(strReturnWhere))
            {
                strReturnWhere = strReturnWhere.Remove(strReturnWhere.LastIndexOf("and"));
            }

            return strReturnWhere;
        }

说明:此处只需要指定你自定义的条件就可以了,以上代码展示的只是文章图一的实现

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

好了,到这,我们的所有操作就完成了,来看下我们运行的分页效果图:

 

 DevExpress中如何实现GridControl的分页功能(组件)

  • 13
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值