1,分页嘛先要有个SQL 程序才能写下去 先提供下SQL的思路,对于分页的SQL我之前帖子有介绍,就不一一介绍了

select top pageSize *     --显示数量
from (select row_number()
over(order by EG_ID asc) as rownumber,* --行数
from ExchangGifts) temp_row
where rownumber>((pageIndex-1)*pageSize);--开始页数 --建议SQL

存储过程参考下

CREATE proc [dbo].[P_GetCardLevelsPaged]
@PageSize int,
@PageIndex int,
@Count int output,
@LevelName varchar(20)
as
begin
select top(@PageSize) * from CardLevels
where CL_ID not in(
select top(@PageSize*(@PageIndex-1)) CL_ID from CardLevels where CL_LevelName like '%'+@LevelName+'%'
)
and CL_LevelName like '%'+@LevelName+'%'
select @Count=COUNT(*) from CardLevels where CL_LevelName like '%'+@LevelName+'%'
end GO

2,例子中用的分页SQL:

SELECT * FROM(SELECT ROW_NUMBER() OVER(order BY E.EG_ID) as rows ,E. * FROM ExchangGifts E)
AS A WHERE A.rows BETWEEN 1 and 10;

代码  注释详细

 public partial class XtraForm2 : DevExpress.XtraEditors.XtraForm
{ private int pageIndex = ; //当前页码
private int pageSize = ; //每页的尺寸
private int pageCount = ; //总页数 public XtraForm2()
{
InitializeComponent();
} //获取记录总数
public int GetRecordCount()
{
int count = ;
string sql = "select count(*) from ExchangGifts";
count = Convert.ToInt32(DBHelper.GetScalar(sql, null, false));
return count;
} //获取当前页的记录列表
public DataTable GetListByPage(int startIndex, int endIndex)
{
DataTable dt = new DataTable();
StringBuilder strSql = new StringBuilder();
strSql.Append("select * from (");
strSql.Append("select row_number() over(order by t.[EG_ID]) as rows,t.* from ExchangGifts as t) as tt");
strSql.AppendFormat(" where tt.rows between {0} and {1} ", startIndex, endIndex);
dt = DBHelper.Query(strSql.ToString(), null);
return dt;
} //绑定数据表格控件
public void BindPageGridList()
{
//记录的开始索引
int startIndex = (pageIndex - ) * pageSize + ;
//记录的结束索引
int endIndex = pageIndex * pageSize;
//总记录数
int row = GetRecordCount(); if (row % pageSize > )
{
pageCount = row / pageSize + ;
}
else
{
pageCount = row / pageSize;
}
//如果当前是最后一页,设置最后一行记录的索引
if (pageIndex == pageCount)
{
endIndex = row;
} DataTable dt = this.GetListByPage(startIndex, endIndex);
gc.DataSource = dt;
nvgDataPager.DataSource = dt;
nvgDataPager.TextStringFormat = string.Format("第{0}页,共{1}页", pageIndex, pageCount);
} private void nvgDataPager_ButtonClick(object sender, NavigatorButtonClickEventArgs e)
{
string type = e.Button.Tag.ToString();
switch (type)
{
case "首页":
pageIndex = ;
break;
case "末页":
pageIndex = pageCount;
break;
case "下一页":
if (pageIndex < pageCount)
{
pageIndex++;
}
break;
case "上一页":
if (pageIndex > )
{
pageIndex--;
}
break;
}
this.BindPageGridList(); //绑定当前页到控件
} }

效果图

WinFrom 在Devexpress里用GridControl和DataNavigtor进行分页的更多相关文章

  1. DevExpress控件GridControl中的布局详解 【转】

    DevExpress控件GridControl中的布局详解 [转] 2012-10-24 13:27:28|  分类: devexpress |  标签:devexpress  |举报|字号 订阅   ...

  2. DevExpress控件-GridControl根据条件改变单元格(Dev GridControl 单元格着色)

    DevExpress控件-GridControl根据条件改变单元格颜色,如下图: 解决办法:可以参考:http://www.cnblogs.com/zeroone/p/4311191.html 第一步 ...

  3. DevExpress控件-- Gridcontrol合并表头

    写在前面的话: 在园子里逛了有一段时间了,一直想写点东西,但苦于自己的水平有限,生怕写出来的东西浪费了读者的时间.楼主有幸参加了公司DevExpress控件的培训,独乐乐不如众乐乐,特附上Demo以飨 ...

  4. DevExpress使用方法GridControl总结

    1.隐藏最上面的GroupPanel gridView1.OptionsView.ShowGroupPanel=false; 2.得到当前选定记录某字段的值 sValue=Table.Rows[gri ...

  5. DevExpress控件GridControl使用 z

    设置选中行的背景色.而不改变前景色. EnableAppearanceFocusedCell = False, EnableAppearanceFocusedRow = False private v ...

  6. DevExpress 控件 GridControl常见用法

    刚接触DevExpress第三方控件,把GridControl的常见用法整理一下,以供参考: 说明: gcTest   GridControl gvText    GridView //隐藏最上面的G ...

  7. DevExpress控件-GridControl根据条件改变单元格/行颜色--转载

    DevExpress控件-数据控件GridControl,有时我们需要根据特定条件改变符合条件的行或者单元格颜色达到突出显示目的,现在动起鼠标跟我一起操作吧,对的,要达到这个目的您甚至都不用动键盘. ...

  8. DevExpress,LayoutControl,TreeList,GridControl等

    1.显示边框进行折叠 选择一个layoutControlGroupX 将其GroupBordersVisible设置成True,将TextVisiable=True 2. TreeList 2.1需要 ...

  9. DevExpress 小计 GridControl 隔行换行

    摘自: http://www.cnblogs.com/yuerdongni/archive/2012/09/08/2676753.html 1. 如何解决单击记录整行选中的问题 View->Op ...

随机推荐

  1. Java入门 - 语言基础 - 02.开发环境配置

    原文地址:http://www.work100.net/training/java-environment-setup.html 更多教程:光束云 - 免费课程 开发环境配置 序号 文内章节 视频 1 ...

  2. OAuth2.0的那点荒唐小秘密 -几个简单概念和原理

    OAuth2.0这个名词你是否在项目中时常听到呢?是否觉得好像懂,又好像不太懂呢? 最近一直想写篇关于OAuth2.0的东西,记录下我的学习与感悟,然各种理由的拖延,直到今日才静下心来写下这篇博客.当 ...

  3. 插画版Kubernetes指南

    原文地址:https://www.cnblogs.com/kouryoushine/articles/8007648.html 是根据一个视频翻译过来的,比较形象 编者按:Matt Butcher 是 ...

  4. 《代码整洁之道》&《程序员的职业素养》

    这是why技术的第32篇原创文章 春节期间读了两本技术相关的书籍:编程大师Bob大叔的<代码整洁之道>和<代码整洁之道:程序员的职业素养>. <代码整洁之道>出版于 ...

  5. CSS快速入门例子

    CSS入门应用 01-结合方式01 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...

  6. 给定区间[-2的31次方, 2的31次方]内的3个整数A、B和C,请判断A+B是否大于C

    题目描述给定区间[-2的31次方, 2的31次方]内的3个整数A.B和C,请判断A+B是否大于C. 输入描述:输入第1行给出正整数T(<=10),是测试用例的个数.随后给出T组测试用例,每组占一 ...

  7. DLL/EXE查看工具Dumpbin

    一般情况下,我们需要查看一个DLL或EXE中的包含的函数或是依赖的函数之类的信息,可以使用VS自带的工具dumpbin: 可以直接在命令行下输入dumpbin就可以查看他的使用说明,如果未显示,可以先 ...

  8. Junit单元测试案例(测试语言Java)

    # 二.单元测试案例##### 1. 首先我们先创建一个Operation类,在类中我们写几个方法,分别为加.减.乘.除.这些方法都不加边界值与判断.如下图所示:![在这里插入图片描述](https: ...

  9. Python 代码风格规范(Google)

    Python风格规范 分号 tip 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 行长度 tip 每行不超过80个字符 例外: 长的导入模块语句 注释里的URL 不要使用反斜杠连接行. Py ...

  10. 简单看看ThreadPoolExecutor原理

    线程池的作用就不多说了,其实就是解决两类问题:一是当执行大量的异步任务时线程池能够提供较好的性能,在不使用线程池时,每当需要执行异步任务是需要直接new一个线程去执行,而线程的创建和销毁是需要花销的, ...