zoukankan      html  css  js  c++  java
  • DevExpress通过girdcontrol实现分页

    简介: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的分页功能(组件)

  • 相关阅读:
    [HDU1561]The more, The Better
    [洛谷P1352][codevs1380]没有上司的舞会
    【51Nod1773】A国的贸易 解题报告
    快速沃尔什变换
    【SDOI2015】序列统计 解题报告
    【CF438E】小朋友和二叉树 解题报告
    多项式Ⅰ
    洛谷 P5105 不强制在线的动态快速排序
    【BZOJ4916】神犇和蒟蒻 解题报告
    【BZOJ3309】DZY Loves Math 解题报告
  • 原文地址:https://www.cnblogs.com/marblemm/p/7364228.html
Copyright © 2011-2022 走看看