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. 关于SpringDataJpa中测试出现StackOverflowError错误问题

    在使用SpringDataJpa进行多表查询时,使用导航查询,每次都出现 StackOverflowError错误, 经过查找资料,网上百度,终于找到原因, StackOverflowError 是栈 ...

  2. 【java面试】java和C/C++的区别

    1.内存分配 java中对内存的分配是动态的,JVM自动对内存进行扫描,对长期不用的空间作为"垃圾"进行收集,使得系统资源得到更充分地利用.按照这种机制,程序员不必关注内存管理问题 ...

  3. Kdenlive-开始

    版权声明:原创文章,未经博主允许不得转载 这是 Kdenlive 系列文章的第一篇 说明 在 Linux 下的视频编辑的软件并不多,作为其中之一的 kdenlive 在网上的教程就更少了.于是自己琢磨 ...

  4. Client API Object Model - Form Context

    FormContext 提供界面或者界面上控件的的引用. 比如说 quick view control, row in an editable grid 等等. Xrm.Page 和 getFormC ...

  5. JS-05-元素获取

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. ubuntu “快捷方式”

    1.创建.Desktop文件 sudo gedit /usr/share/applications/pycharm.desktop 2.建立pycharm.desktop [Desktop Entry ...

  7. MySQL 高可用之主从复制

    MySQL主从复制简介 Mysql的主从复制方案,都是数据传输的,只不过MySQL无需借助第三方工具,而是自带的同步复制功能,MySQL的主从复制并不是磁盘上文件直接同步,而是将binlog日志发送给 ...

  8. Java博客专栏

    1. Java23种设计模式 2. JVM虚拟机 3. 设计模式6大原则 4. Java代码性能优化总结 5. 三种代理 6. iText操作PDF 7. 解析XML的4种方式 8. 面向对象思想 9 ...

  9. 11、ACL

    IP访问控制列表 标准ACL 1)检查源地址 2)不能对协议簇作限定 扩展ACL 1)检查源和目标地址 2)能容许或拒绝特定的协议和应用(端口号) 区别列表类型: 1)ACL号 : 1-99,1300 ...

  10. Django自动化测试平台项目案例

    引言 在项目组待了近半年时间,根据自己的感受和体验,做了一个辅助测试的工具(数据预报平台),主要目的是针对目前项目接口文档缺失,自动化预报脚本无法可视化,资源循环利用,统一管理化. 业务背景 我们项目 ...