WPF DataGrid的分頁實現


原理:其實分頁功能的實現大家都清楚,無非就是把一個記錄集通過運算來刷選里面對應頁碼的記錄。

接來下我們再次添加新的代碼

    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.   
  3.  private void Binding(int number, int currentSize)  
  4. {  
  5.       List<Information> infoList = new List<Information>();  
  6.       infoList = tbInfo.GetInformationList();      //獲取數據源  
  7.       int count = infoList.Count;          //獲取記錄總數  
  8.       int pageSize = 0;            //pageSize表示總頁數  
  9.       if (count % number == 0)  
  10.       {  
  11.            pageSize = count / number;  
  12.       }  
  13.       else  
  14.       {  
  15.            pageSize = count / number + 1;  
  16.       }  
  17.       tbkTotal.Text = pageSize.ToString();         
  18.   
  19.       tbkCurrentsize.Text = currentSize.ToString();     
  20.       infoList = infoList.Take(number * currentSize).Skip(number * (currentSize - 1)).ToList();   //刷選第currentSize頁要顯示的記錄集  
  21.       dataGrid1.ItemsSource = infoList;        //重新綁定dataGrid1  
  22. }  
  23.   
  24.   
  25.   
  26. //分頁方法寫好了 接下來就是響應下一頁,上一頁,和跳轉頁面的事件了  
  27.   
  28. //先定義一個常量  
  29.   
  30.  const int Num=12;  //表示每頁顯示12條記錄  
  31.   
  32. //上一頁事件   
  33.   
  34.  private void btnUp_Click(object sender, RoutedEventArgs e)  
  35. {  
  36.      int currentsize = int.Parse(tbkCurrentsize.Text); //獲取當前頁數  
  37.      if (currentsize > 1)  
  38.      {  
  39.          Binding(Num, currentsize - 1);   //調用分頁方法  
  40.      }  
  41. }  
  42.   
  43.   
  44. //下一頁事件  
  45. private void btnNext_Click(object sender, RoutedEventArgs e)  
  46. {  
  47.      int total = int.Parse(tbkTotal.Text); //總頁數  
  48.      int currentsize = int.Parse(tbkCurrentsize.Text); //當前頁數  
  49.      if (currentsize < total)  
  50.     {  
  51.         Binding(Num, currentsize + 1);   //調用分頁方法  
  52.     }  
  53. }  
  54.   
  55.   
  56. //跳轉事件  
  57. private void btnGo_Click(object sender, RoutedEventArgs e)  
  58. {  
  59.     int pageNum = int.Parse(tbxPageNum.Text);  
  60.     int total = int.Parse(tbkTotal.Text); //總頁數  
  61.     if (pageNum >= 1 && pageNum <= total)  
  62.     {  
  63.        Binding(Num, pageNum);     //調用分頁方法  
  64.     }  
  65. 原文參考  http://blog.csdn.net/sanjiawan/article/details/6785394#


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM