原理:其实分页功能的实现大家都清楚,无非就是把一个记录集通过运算来刷选里面对应页码的记录。

接来下我们再次添加新的代码

    1. <Grid>
    2. <DataGrid  Name="dataGrid1" AutoGenerateColumns="False">
    3. <!--省略N个代码-->
    4. </DataGrid>
    5. <StackPanel Orientation="Horizontal">
    6. <TextBlock Text="转到" Margin="5"/>
    7. <TextBox Name="tbxPageNum" Text="" />
    8. <TextBlock Text="页" />
    9. <Button Content="GO"   Click="btnGo_Click"/>
    10. <Button Name="btnUp" Content="上一页"  VerticalAlignment="Center" Click="btnUp_Click"/>
    11. <Button Name="btnNext" Content="下一页"  VerticalAlignment="Center" Click="btnNext_Click"/>
    12. <TextBlock Height="20">
    13. <TextBlock Text="【共" />
    14. <TextBlock Name="tbkTotal" Foreground="Red" />
    15. <TextBlock Text="页】" />
    16. <TextBlock Text="【当前" />
    17. <TextBlock Name="tbkCurrentsize" Foreground="Red" />
    18. <TextBlock Text="页】" />
    19. </TextBlock>
    20. </StackPanel>
    21. </Grid>

首先我们先写个分页的方法,供上面这些事件调用

后台代码

  1. //number表示每个页面显示的记录数    currentSize表示当前显示页数
  2. private void Binding(int number, int currentSize)
  3. {
  4. List<Information> infoList = new List<Information>();
  5. infoList = tbInfo.GetInformationList();      //获取数据源
  6. int count = infoList.Count;          //获取记录总数
  7. int pageSize = 0;            //pageSize表示总页数
  8. if (count % number == 0)
  9. {
  10. pageSize = count / number;
  11. }
  12. else
  13. {
  14. pageSize = count / number + 1;
  15. }
  16. tbkTotal.Text = pageSize.ToString();
  17. tbkCurrentsize.Text = currentSize.ToString();
  18. infoList = infoList.Take(number * currentSize).Skip(number * (currentSize - 1)).ToList();   //刷选第currentSize页要显示的记录集
  19. dataGrid1.ItemsSource = infoList;        //重新绑定dataGrid1
  20. }
  21. //分页方法写好了 接下来就是响应下一页,上一页,和跳转页面的事件了
  22. //先定义一个常量
  23. const int Num=12;  //表示每页显示12条记录
  24. //上一页事件
  25. private void btnUp_Click(object sender, RoutedEventArgs e)
  26. {
  27. int currentsize = int.Parse(tbkCurrentsize.Text); //获取当前页数
  28. if (currentsize > 1)
  29. {
  30. Binding(Num, currentsize - 1);   //调用分页方法
  31. }
  32. }
  33. //下一页事件
  34. private void btnNext_Click(object sender, RoutedEventArgs e)
  35. {
  36. int total = int.Parse(tbkTotal.Text); //总页数
  37. int currentsize = int.Parse(tbkCurrentsize.Text); //当前页数
  38. if (currentsize < total)
  39. {
  40. Binding(Num, currentsize + 1);   //调用分页方法
  41. }
  42. }
  43. //跳转事件
  44. private void btnGo_Click(object sender, RoutedEventArgs e)
  45. {
  46. int pageNum = int.Parse(tbxPageNum.Text);
  47. int total = int.Parse(tbkTotal.Text); //总页数
  48. if (pageNum >= 1 && pageNum <= total)
  49. {
  50. Binding(Num, pageNum);     //调用分页方法
  51. }
  52. }
  53. 原文参考  http://blog.csdn.net/sanjiawan/article/details/6785394#

WPF DataGrid的分页实现的更多相关文章

  1. WPF DataGrid实现分页显示

    主要代码如下 /// <summary> /// 读取指定页面的数据 /// </summary> /// <param name="pagePerCount& ...

  2. WPF DataGrid常用属性记录

    WPF DataGrid常用属性记录 组件常用方法: BeginEdit:使DataGrid进入编辑状态. CancelEdit:取消DataGrid的编辑状态. CollapseRowGroup:闭 ...

  3. WPF DATAGRID - COMMITTING CHANGES CELL-BY-CELL

    In my recent codeproject article on the DataGrid I described a number of techniques for handling the ...

  4. SSh结合Easyui实现Datagrid的分页显示

    近日学习Easyui,发现非常好用,界面很美观.将学习的心得在此写下,这篇博客写SSh结合Easyui实现Datagrid的分页显示,其他的例如添加.修改.删除.批量删除等功能将在后面的博客一一写来. ...

  5. WPF DataGrid某列使用多绑定后该列排序失效,列上加入 SortMemberPath 设置即可.

    WPF DataGrid某列使用多绑定后该列排序失效 2011-07-14 10:59hdongq | 浏览 1031 次  悬赏:20 在wpf的datagrid中某一列使用了多绑定,但是该列排序失 ...

  6. xceed wpf datagrid

    <!--*********************************************************************************** Extended ...

  7. 关于Jquery EasyUI中的DataGrid服务器端分页随记

    一.关于DataGrid的分页和排序参数 对于分页参数不需要用户指定,程序在AJAX请求的时候会带上分页和排序需要的参数 每页显示条数:rows 当前页:page 排序字段:sort  [multiS ...

  8. 获取wpf datagrid当前被编辑单元格的内容

    原文 获取wpf datagrid当前被编辑单元格的内容 确认修改单元个的值, 使用到datagrid的两个事件 开始编辑事件 BeginningEdit="dataGrid_Beginni ...

  9. schemaeasyui实例:SSh结合Easyui实现Datagrid的分页显示

    查了好多资料,发现还是不全,干脆自己整理吧,最少保证在我的做法正确的,以免误导读者,也是给自己做个记载吧! 克日学习Easyui,发现非常好用,界面很雅观.将学习的心得在此写下,这篇博客写SSh结合E ...

随机推荐

  1. 33.在O(1)时间删除链表结点[DeleteListNode]

    [题目] 给定链表的头指针和一个结点指针,在O(1)时间删除该结点.链表结点的定义如下:  C++ Code  123456   struct ListNode {     int        m_ ...

  2. excel复制+粘贴,怎样让公式里的参数不自动变化?

    例如,某一单元格内容为:=A1+A2 我把它复制+粘贴到其他地方,就自动变成了:=B1+B2 怎样让它不变化,仍保持=A1+A2 ?? 答: Excel一般使用相对地址来引用单元格的位置,当把一个含有 ...

  3. canvas实践小实例一 —— 画板工具

    前面讲了一部分的canvasAPI的基础知识,光看API的介绍确实是很无趣乏味,需要一点可以激发内心的激情的东西来激励自己来学习,于是就了伴随canvasAPI学习的小实例,这样通过API的知识,结合 ...

  4. Spring MVC程序中得到静态资源文件css,js,图片

    转载自:http://www.blogjava.net/fiele/archive/2014/08/24/417283.html 用 Spring MVC 开发应用程序,对于初学者有一个很头疼的问题, ...

  5. Maven无法引入自定义构件依赖的解决方案

    一般情况下,使用如下命令即可将自定义构件安装到本地仓库,供其他项目使用. mvn clean install 但是也有例外,今天我就分享一下我遇到问题,供相同遭遇的同学参考下. 我使用了父POM统一管 ...

  6. [Android Pro] 利用tcpdump和wireshark对android网络请求进行分析

    一: tcpdump操作流程 1. 手机要有root权限 2. 下载tcpdump   http://www.strazzere.com/android/tcpdump 3. adb push c:\ ...

  7. [Android Memory] Android Lint简介(转载)

    英文原文:http://tools.android.com/tips/lint  参照文章:http://blog.csdn.net/thl789/article/details/8037473 转载 ...

  8. CSS鼠标样式整理

    鼠标样式的标签: cursor:*;  //该属性定义了鼠标指针放在一个元素边界范围内时所用的光标形状: 鼠标样式: 值 描述 url 需使用的自定义光标的 URL. 注释:请在此列表的末端始终定义一 ...

  9. 希尔排序( Shell Sort)

    原文地址:http://www.stoimen.com/blog/,在此感谢作者! Insertion sort is a great algorithm, because it’s very int ...

  10. HttpClient实现客户端与服务器的通信

    本篇主要讲解了利用HttpClient实现 windows主机与linux服务器的通信与传递数据 HttpClient代码,服务器端配置 系统和安装软件 1)ubuntu 14.04 64位系统 2) ...