DevExpress中如何实现GridControl的分页功能(组件)
2014-01-21 14:23
471 查看
DevExpress中如何实现GridControl的分页功能(组件)
简介:DevExpress中如何实现GridControl的分页功能(组件),此文主要是在之前文章里的代码基础上重新封装成的组件
主要是利用DataNavigator和GridControl组合,自定义事件实现分页功能
接下来,我们就去实现分页功能,先看下效果图:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
整个分页操作,基本分三步:
一:界面层
二:实体层
三:代码层
四:调用
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一:界面层,如图:
新建用户控件,命名:PageUpControl,在Designer.cs设计文件中添加如下代码:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
二:实体层
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三:代码层
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
四:调用
如文章开头第一张效果图所述,当我就行查询操作时,也就是调用分页和绑定数据,需要做的操作,如下:
分页数据集:
说明:此处只需要指定你自定义的条件就可以了,以上代码展示的只是文章图一的实现
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
好了,到这,我们的所有操作就完成了,来看下我们运行的分页效果图:
简介:DevExpress中如何实现GridControl的分页功能(组件),此文主要是在之前文章里的代码基础上重新封装成的组件
主要是利用DataNavigator和GridControl组合,自定义事件实现分页功能
接下来,我们就去实现分页功能,先看下效果图:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
整个分页操作,基本分三步:
一:界面层
二:实体层
三:代码层
四:调用
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一:界面层,如图:
新建用户控件,命名:PageUpControl,在Designer.cs设计文件中添加如下代码:
namespace BDSS.Component { partial class PageUpControl { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Component Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.nvgtDataPager = new DevExpress.XtraEditors.DataNavigator(); this.SuspendLayout(); // // nvgtDataPager // this.nvgtDataPager.Buttons.Append.Visible = false; this.nvgtDataPager.Buttons.CancelEdit.Visible = false; this.nvgtDataPager.Buttons.EndEdit.Visible = false; this.nvgtDataPager.Buttons.First.Hint = "首页"; this.nvgtDataPager.Buttons.First.Visible = false; this.nvgtDataPager.Buttons.Last.Hint = "末页"; this.nvgtDataPager.Buttons.Last.Visible = false; this.nvgtDataPager.Buttons.Next.Visible = false; this.nvgtDataPager.Buttons.NextPage.Hint = "下一页"; this.nvgtDataPager.Buttons.NextPage.Visible = false; this.nvgtDataPager.Buttons.Prev.Visible = false; this.nvgtDataPager.Buttons.PrevPage.Hint = "上一页"; this.nvgtDataPager.Buttons.PrevPage.Visible = false; this.nvgtDataPager.Buttons.Remove.Visible = false; this.nvgtDataPager.CustomButtons.AddRange(new DevExpress.XtraEditors.NavigatorCustomButton[] { new DevExpress.XtraEditors.NavigatorCustomButton(-1, 0, true, true, "首页", "首页"), new DevExpress.XtraEditors.NavigatorCustomButton(-1, 1, true, true, "上一页", "上一页"), new DevExpress.XtraEditors.NavigatorCustomButton(-1, 4, true, true, "下一页", "下一页"), new DevExpress.XtraEditors.NavigatorCustomButton(-1, 5, true, true, "末页", "末页")}); this.nvgtDataPager.Dock = System.Windows.Forms.DockStyle.Fill; this.nvgtDataPager.Location = new System.Drawing.Point(0, 0); this.nvgtDataPager.Margin = new System.Windows.Forms.Padding(300, 3, 300, 3); this.nvgtDataPager.Name = "nvgtDataPager"; this.nvgtDataPager.ShowToolTips = true; this.nvgtDataPager.Size = new System.Drawing.Size(800, 42); this.nvgtDataPager.TabIndex = 18; this.nvgtDataPager.Text = "dataNavigator1"; this.nvgtDataPager.TextLocation = DevExpress.XtraEditors.NavigatorButtonsTextLocation.Center; this.nvgtDataPager.TextStringFormat = "第 {0}页 ,共 {1}"; this.nvgtDataPager.ButtonClick += new DevExpress.XtraEditors.NavigatorButtonClickEventHandler(this.nvgtDataPager_ButtonClick_1); // // PageUpControl // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.nvgtDataPager); this.Name = "PageUpControl"; this.Size = new System.Drawing.Size(800, 42); this.ResumeLayout(false); } #endregion private DevExpress.XtraEditors.DataNavigator nvgtDataPager; } }说明:本文用户控件是在 BDSS.Component 命名空间下创建的
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
二:实体层
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BDSS.Model.BLL.Model { public class SQLParams { Oracle.DataAccess.Client.OracleParameter[] _oralceParameter; string _sql; public Oracle.DataAccess.Client.OracleParameter[] OracleParameteies { get { return _oralceParameter; } set { _oralceParameter = value; } } public string SQL { get { return _sql; } set { _sql = value; } } } }说明:此类是在BDSS.Model.BLL.Model命名空间下创建的
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三:代码层
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; using DevExpress.XtraEditors; using DevExpress.XtraGrid; using DevExpress.XtraGrid.Views.Grid; using BDSS.Model.BLL.Model; namespace BDSS.Component { public partial class PageUpControl : DevExpress.XtraEditors.XtraUserControl { public PageUpControl() { InitializeComponent(); nvgtDataPager.Buttons.CustomButtons[0].Enabled = false; nvgtDataPager.Buttons.CustomButtons[1].Enabled = false; nvgtDataPager.Buttons.CustomButtons[2].Enabled = false; nvgtDataPager.Buttons.CustomButtons[3].Enabled = false; nvgtDataPager.TextStringFormat = string.Format(""); } private GridControl myControl; public GridControl MyControl { get { return myControl; } set { myControl = value; } } private int pageIndex; /// <summary> /// 当前页数 /// </summary> public int PageIndex { get { return pageIndex; } set { pageIndex = value; } } /// <summary> /// 总页数 /// </summary> public int PageCount = 0; private int pagesize; /// <summary> /// 页行数 /// </summary> public int Pagesize { get { return pagesize; } set { pagesize = value; } } private int pageRow; public int PageRow { get { return pageRow; } set { pageRow = value; } } private int startIndex; private int endIndex; public GetMethod Method; public ParamMethod MyParamMethod; public SQLParams OracleParams; public string StrWhere = ""; public string StrOrder = ""; public void GetDataSet(GetMethod myMethod,string strwhere,string strOrder) { Method = myMethod; StrWhere = strwhere; StrOrder = strOrder; BindPageGridList(); DevExpress.XtraGrid.Views.Grid.GridView gv = (GridView)MyControl.Views[0]; //查询为空提示 gv.CustomDrawEmptyForeground += new DevExpress.XtraGrid.Views.Base.CustomDrawEventHandler(gv_CustomDrawEmptyForeground); } public void GetDataSet(ParamMethod myMethod,SQLParams oracleParams, string strOrder) { MyParamMethod = myMethod; this.OracleParams = oracleParams; StrOrder = strOrder; BindPageGridList(); DevExpress.XtraGrid.Views.Grid.GridView gv = (GridView)MyControl.Views[0]; //查询为空提示 gv.CustomDrawEmptyForeground += new DevExpress.XtraGrid.Views.Base.CustomDrawEventHandler(gv_CustomDrawEmptyForeground); } public void gv_CustomDrawEmptyForeground(object sender, DevExpress.XtraGrid.Views.Base.CustomDrawEventArgs e) { string s=""; if (PageRow == 0) { s = "当前查询没有返回结果."; nvgtDataPager.Buttons.CustomButtons[0].Enabled = false; nvgtDataPager.Buttons.CustomButtons[1].Enabled = false; nvgtDataPager.Buttons.CustomButtons[2].Enabled = false; nvgtDataPager.Buttons.CustomButtons[3].Enabled = false; nvgtDataPager.TextStringFormat = string.Format(""); } Font font = new Font("Tahoma", 10, FontStyle.Bold); Rectangle r = new Rectangle(e.Bounds.Left + 5, e.Bounds.Top + 5, e.Bounds.Width - 5, e.Bounds.Height - 5); e.Graphics.DrawString(s, font, Brushes.Black, r); } private 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--; } BindPageGridList(); } public void BindPageGridList() { nvgtDataPager.Buttons.CustomButtons[0].Enabled = true; nvgtDataPager.Buttons.CustomButtons[1].Enabled = true; nvgtDataPager.Buttons.CustomButtons[2].Enabled = true; nvgtDataPager.Buttons.CustomButtons[3].Enabled = true; //记录获取开始数 startIndex = (PageIndex - 1) * Pagesize + 1; //结束数 endIndex = PageIndex * Pagesize; //获取总页数 if (PageRow % Pagesize > 0) { PageCount = PageRow / Pagesize + 1; } else { PageCount = PageRow / Pagesize; } if (PageIndex == 1) { nvgtDataPager.Buttons.CustomButtons[0].Enabled = false; nvgtDataPager.Buttons.CustomButtons[1].Enabled = false; ; } //最后页时获取真实记录数 if (PageCount == PageIndex) { endIndex = PageRow; nvgtDataPager.Buttons.CustomButtons[2].Enabled = false; nvgtDataPager.Buttons.CustomButtons[3].Enabled = false; } if (true) { } if (MyParamMethod != null) { MyControl.DataSource = MyParamMethod(OracleParams, StrOrder, startIndex, endIndex).Tables[0]; } else { MyControl.DataSource = Method(StrWhere, StrOrder, startIndex, endIndex).Tables[0]; } nvgtDataPager.TextStringFormat = string.Format("第 {0}页, 共 {1}页", PageIndex, PageCount); } public delegate DataSet GetMethod(string strWhere, string orderby, int startIndex, int endIndex); public delegate DataSet ParamMethod(SQLParams oralceParams,string orderby, int startIndex, int endIndex); private void nvgtDataPager_ButtonClick_1(object sender, NavigatorButtonClickEventArgs e) { ShowEvent("ButtonClick", e.Button); } } }
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
四:调用
如文章开头第一张效果图所述,当我就行查询操作时,也就是调用分页和绑定数据,需要做的操作,如下:
pageUpControl1.MyControl = GridControl控件名称; pageUpControl1.PageRow =总条数; pageUpControl1.PageIndex = 页索引(起始页); pageUpControl1.Pagesize = 每页条数; pageUpControl1.GetDataSet(分页数据集, 查询条件,排序条件);
分页数据集:
/// <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.TASK_BEGIN_DATE desc"); } strSql.Append(")AS Rowss, T.ID,T.TASKORDER_ID,T.TASKORDER_CREATER,T.SATELLITE_TYPE_CODE,T.TASKORDER_TYPE_CODE,T.TASK_PRIORITY_CODE,T.RELEASE_DATE,T.RECEIVE_DATE,T.TASK_BEGIN_DATE,T.TASK_END_DATE,T.DATA_PUSH_PATH,T.AREA_CODE,T.TASKORDER_STATUS,T.TASKORDER_COMMENT.getStringVal() TASKORDER_COMMENT,T.STATUS,T.CREATE_USERID from TL_TASK_ORDER_LOG T "); if (!string.IsNullOrEmpty(strWhere.Trim())) { strSql.Append(" WHERE " + strWhere); } strSql.Append(" ) TT"); strSql.AppendFormat(" WHERE TT.Rowss between {0} and {1}", startIndex, endIndex); return _DbHelperOra.Query(strSql.ToString()); }
说明:此处只需要指定你自定义的条件就可以了,以上代码展示的只是文章图一的实现
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
好了,到这,我们的所有操作就完成了,来看下我们运行的分页效果图:
相关文章推荐
- DevExpress中如何实现GridControl的分页功能
- JSP如何实现分页功能
- DEVExpress For WPF 中GridControl如何实现滚动分页(延迟查询)
- 如何使用友盟 Cocos2d-x 分享组件实现 Android/iOS 分享功能
- ajax 如何实现分页功能
- 如何用C的CGI实现网页的分页显示功能?
- Winform传统DataGridView和DevExpress控件的GridControl两者表头全选功能的实现
- Vue2.0+ElementUi封装table组件实现分页功能
- Java中如何实现分页功能
- 如何使用struts2结合MySQL实现分页功能?
- Winform传统DataGridView和DevExpress控件的GridControl两者表头全选功能的实现
- 如何使用友盟 Cocos2d-x 分享组件实现 Android/iOS 分享功能
- YUI的treeview组件——带checkbox类型的treeview如何实现disabled功能
- 如何实现从数据库中取出的列表数据进行分页功能?
- Vue组件BootPage实现简单的分页功能
- mybatis如何实现分页功能?
- Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
- YUI的treeview组件——带checkbox类型的treeview如何实现disabled功能
- 如何使用友盟 Cocos2d-x 分享组件实现 Android/iOS 分享功能
- 如何在DataGrid中实现分页功能