• wpf DataGrid的分页实现


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

  • 相关阅读:
    RxJS 系列 – Error Handling Operators
    RxJS 系列 – Join Creation Operators
    Google – Reviews
    Google Analytics – GA4 & Tag Manager 概念篇
    DOM & BOM – Input File, Drag & Drop File, File Reader, Blob, ArrayBuffer, File, UTF8 Encode/Decode, Download File
    RxJS 系列 – 大杂烩
    RxJS 系列 – Join Operators
    RxJS 系列 – 实战练习
    前端接收文件流并下载解决乱码问题
    package.json 与 packagelock.json 的关系
  • 原文地址:https://www.cnblogs.com/swarb/p/9924364.html
Copyright © 2020-2023  润新知