wpf DataGrid的分页实现

wpf DataGrid的分页实现

2012-11-29 13:37 by swarb, ... 阅读, ... 评论, 收藏, 编辑
<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>  

<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>

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

后台代码

  1. //number表示每个页面显示的记录数    currentSize表示当前显示页数  
  2.  
  3. private void Binding(int number, int currentSize) 
  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.  
  18.       tbkCurrentsize.Text = currentSize.ToString();    
  19.       infoList = infoList.Take(number * currentSize).Skip(number * (currentSize - 1)).ToList();   //刷选第currentSize页要显示的记录集  
  20.       dataGrid1.ItemsSource = infoList;        //重新绑定dataGrid1  
  21.  
  22.  
  23.  
  24. //分页方法写好了 接下来就是响应下一页,上一页,和跳转页面的事件了  
  25.  
  26. //先定义一个常量  
  27.  
  28. const int Num=12;  //表示每页显示12条记录  
  29.  
  30. //上一页事件   
  31.  
  32. private void btnUp_Click(object sender, RoutedEventArgs e) 
  33.      int currentsize = int.Parse(tbkCurrentsize.Text); //获取当前页数  
  34.      if (currentsize > 1) 
  35.      { 
  36.          Binding(Num, currentsize - 1);   //调用分页方法  
  37.      } 
  38.  
  39.  
  40. //下一页事件  
  41. private void btnNext_Click(object sender, RoutedEventArgs e) 
  42.      int total = int.Parse(tbkTotal.Text); //总页数  
  43.      int currentsize = int.Parse(tbkCurrentsize.Text); //当前页数  
  44.      if (currentsize < total) 
  45.     { 
  46.         Binding(Num, currentsize + 1);   //调用分页方法  
  47.     } 
  48.  
  49.  
  50. //跳转事件  
  51. private void btnGo_Click(object sender, RoutedEventArgs e) 
  52.     int pageNum = int.Parse(tbxPageNum.Text); 
  53.     int total = int.Parse(tbkTotal.Text); //总页数  
  54.     if (pageNum >= 1 && pageNum <= total) 
  55.     { 
  56.        Binding(Num, pageNum);     //调用分页方法  
  57.     } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值