WPF DataGrid的分页实现
原理:其实分页功能的实现大家都清楚,无非就是把一个记录集通过运算来刷选里面对应页码的记录。
接来下我们再次添加新的代码
- <Grid>
- <DataGrid Name="dataGrid1" AutoGenerateColumns="False">
- <!--省略N个代码-->
- </DataGrid>
- <StackPanel Orientation="Horizontal">
- <TextBlock Text="转到" Margin="5"/>
- <TextBox Name="tbxPageNum" Text="" />
- <TextBlock Text="页" />
- <Button Content="GO" Click="btnGo_Click"/>
- <Button Name="btnUp" Content="上一页" VerticalAlignment="Center" Click="btnUp_Click"/>
- <Button Name="btnNext" Content="下一页" VerticalAlignment="Center" Click="btnNext_Click"/>
- <TextBlock Height="20">
- <TextBlock Text="【共" />
- <TextBlock Name="tbkTotal" Foreground="Red" />
- <TextBlock Text="页】" />
- <TextBlock Text="【当前" />
- <TextBlock Name="tbkCurrentsize" Foreground="Red" />
- <TextBlock Text="页】" />
- </TextBlock>
- </StackPanel>
- </Grid>
首先我们先写个分页的方法,供上面这些事件调用
后台代码
- //number表示每个页面显示的记录数 currentSize表示当前显示页数
- private void Binding(int number, int currentSize)
- {
- List<Information> infoList = new List<Information>();
- infoList = tbInfo.GetInformationList(); //获取数据源
- int count = infoList.Count; //获取记录总数
- int pageSize = 0; //pageSize表示总页数
- if (count % number == 0)
- {
- pageSize = count / number;
- }
- else
- {
- pageSize = count / number + 1;
- }
- tbkTotal.Text = pageSize.ToString();
- tbkCurrentsize.Text = currentSize.ToString();
- infoList = infoList.Take(number * currentSize).Skip(number * (currentSize - 1)).ToList(); //刷选第currentSize页要显示的记录集
- dataGrid1.ItemsSource = infoList; //重新绑定dataGrid1
- }
- //分页方法写好了 接下来就是响应下一页,上一页,和跳转页面的事件了
- //先定义一个常量
- const int Num=12; //表示每页显示12条记录
- //上一页事件
- private void btnUp_Click(object sender, RoutedEventArgs e)
- {
- int currentsize = int.Parse(tbkCurrentsize.Text); //获取当前页数
- if (currentsize > 1)
- {
- Binding(Num, currentsize - 1); //调用分页方法
- }
- }
- //下一页事件
- private void btnNext_Click(object sender, RoutedEventArgs e)
- {
- int total = int.Parse(tbkTotal.Text); //总页数
- int currentsize = int.Parse(tbkCurrentsize.Text); //当前页数
- if (currentsize < total)
- {
- Binding(Num, currentsize + 1); //调用分页方法
- }
- }
- //跳转事件
- private void btnGo_Click(object sender, RoutedEventArgs e)
- {
- int pageNum = int.Parse(tbxPageNum.Text);
- int total = int.Parse(tbkTotal.Text); //总页数
- if (pageNum >= 1 && pageNum <= total)
- {
- Binding(Num, pageNum); //调用分页方法
- }
- }
- 原文参考 http://blog.csdn.net/sanjiawan/article/details/6785394#
WPF DataGrid的分页实现的更多相关文章
- WPF DataGrid实现分页显示
主要代码如下 /// <summary> /// 读取指定页面的数据 /// </summary> /// <param name="pagePerCount& ...
- WPF DataGrid常用属性记录
WPF DataGrid常用属性记录 组件常用方法: BeginEdit:使DataGrid进入编辑状态. CancelEdit:取消DataGrid的编辑状态. CollapseRowGroup:闭 ...
- WPF DATAGRID - COMMITTING CHANGES CELL-BY-CELL
In my recent codeproject article on the DataGrid I described a number of techniques for handling the ...
- SSh结合Easyui实现Datagrid的分页显示
近日学习Easyui,发现非常好用,界面很美观.将学习的心得在此写下,这篇博客写SSh结合Easyui实现Datagrid的分页显示,其他的例如添加.修改.删除.批量删除等功能将在后面的博客一一写来. ...
- WPF DataGrid某列使用多绑定后该列排序失效,列上加入 SortMemberPath 设置即可.
WPF DataGrid某列使用多绑定后该列排序失效 2011-07-14 10:59hdongq | 浏览 1031 次 悬赏:20 在wpf的datagrid中某一列使用了多绑定,但是该列排序失 ...
- xceed wpf datagrid
<!--*********************************************************************************** Extended ...
- 关于Jquery EasyUI中的DataGrid服务器端分页随记
一.关于DataGrid的分页和排序参数 对于分页参数不需要用户指定,程序在AJAX请求的时候会带上分页和排序需要的参数 每页显示条数:rows 当前页:page 排序字段:sort [multiS ...
- 获取wpf datagrid当前被编辑单元格的内容
原文 获取wpf datagrid当前被编辑单元格的内容 确认修改单元个的值, 使用到datagrid的两个事件 开始编辑事件 BeginningEdit="dataGrid_Beginni ...
- schemaeasyui实例:SSh结合Easyui实现Datagrid的分页显示
查了好多资料,发现还是不全,干脆自己整理吧,最少保证在我的做法正确的,以免误导读者,也是给自己做个记载吧! 克日学习Easyui,发现非常好用,界面很雅观.将学习的心得在此写下,这篇博客写SSh结合E ...
随机推荐
- ReverseString
[本文链接] http://www.cnblogs.com/hellogiser/p/reverse-string.html reverse string [代码] C++ Code 123456 ...
- HDU 3833 YY's new problem ()
YY's new problem Time Limit: 12000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- UTF8-GBK WideCharToMultiByte MultiByteToWideChar
//MFC版本 CString UTF8ToGBK(const CString& strUTF8){ //确定转换为Unicode需要多少缓冲区(返回值也包含了最后一个NULL字符) int ...
- osgEarth例子
#include <osgViewer/Viewer>#include <osgViewer/ViewerEventHandlers>#include <osgGA/St ...
- Android实现监测网络状态
本文主要用到了安卓监测网络状态变化功能,实现了WIFI,3G,无网络状态切换时发出通知的功能. 主要知识点 service broadcast 接口回调实现 service的基本知识 service可 ...
- php 条件查询和多条件查询
条件循环 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
- tar -cvPf new.tar `rpm -ql vsftpd` 建议不要用绝对路径'/'
tar -cvPf new.tar `rpm -ql vsftpd` 解压这样的压缩包,会在当前用户的家目录下解压:~./xxxx;加参数-C :tar -xvf xxx.tar -C / ;来指定 ...
- Freemarker中遍历List以及内置函数使用
在Freemarker应用中经常会遍历List获取需要的数据,并对需要的数据进行排序加工后呈现给用户. 那么在Freemarker中如何遍历List,并对List中数据进行适当的排序呢?一. Free ...
- ubuntu下eclipse无法启动问题
添加-vm和对应参数 -vm/jdk安装目录/bin/java-startupplugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.j ...
- Source Insight 多标签插件
Source Insight不仅仅是一个强大的程序编辑器,它还能显示reference trees,class inheritance diagrams和call trees.Source Insig ...