zoukankan      html  css  js  c++  java
  • WPF 分页控件


    注:此文原来写的,后来忘了什么原因删除了,在网上看到有人转载,我在转回来。

    做项目时需要数据分页在网站找了半天也没有找到合适的,没办法自己写个,项目比较着急先凑合写个吧,有时间在重写下。

    页面部分代码

    <UserControl x:Class="Test.Pager"
    xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc
    ="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:d
    ="http://schemas.microsoft.com/expression/blend/2008">

    <StackPanel Orientation="Horizontal">

    <Button Name="FirstButton" Content="首页" Margin="5" Foreground="White" Background="Black" Width="55" VerticalAlignment="Center" Click="FirstButton_Click"/>
    <Button Name="PreButton" Content="上一页" Margin="5" Foreground="White" Background="Black" Width="55" VerticalAlignment="Center" Click="PreButton_Click"/>
    <Button Name="NextButton" Content="下一页" Margin="5" Foreground="White" Background="Black" Width="55" VerticalAlignment="Center" Click="NextButton_Click"/>
    <Button Name="LastButton" Content="尾页" Margin="5" Foreground="White" Background="Black" Width="55" VerticalAlignment="Center" Click="LastButton_Click"/>

    <TextBlock VerticalAlignment="Center" FontSize="12" >
    <TextBlock Text="【共"/>
    <TextBlock Name="txtCount" Text="" Foreground="Red"/>
    <TextBlock Text="页】"/>
    <TextBlock Text="【当前第"/>
    <TextBlock Name="txtCurrent" Foreground="Red"/>
    <TextBlock Text="页】"/>
    <TextBlock Text="【共"/>
    <TextBlock Name="txtAll" Foreground="Red"/>
    <TextBlock Text="条记录】"/>
    </TextBlock>

    </StackPanel>
    </UserControl>


    后台代码部分:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;

    namespace Test
    {
    public delegate void PagerIndexChangingEvent(int pageIndex, EventArgs e);

    /// <summary>
    /// Pager.xaml 的交互逻辑
    /// </summary>
    public partial class Pager : UserControl
    {
    public Pager()
    {
    InitializeComponent();
    }

    public event PagerIndexChangingEvent PageIndexChanging;

    /// <summary>
    /// 当前页索引
    /// </summary>
    private int pageIndex = 0;

    public int PageIndex
    {
    get { return pageIndex; }
    set { pageIndex = value; }
    }
    /// <summary>
    /// 总页数
    /// </summary>
    private int pageCount;
    /// <summary>
    /// 一页个数
    /// </summary>
    private int pageSize=12;

    public int PageSize
    {
    get { return pageSize; }
    set { pageSize = value; }
    }
    //数据个数
    private int count;

    public int Count
    {
    get { return count; }
    set
    {
    count = value;
    if (count == 0)
    pageCount = 0;
    else
    pageCount = count % pageSize == 0 ? count / pageSize : count / pageSize + 1;
    txtCount.Text = pageCount.ToString();
    txtAll.Text = count.ToString();
    Init(null);
    }
    }

    void Init(EventArgs e)
    {
    try
    {
    InitButton();
    int temp = pageIndex + 1;
    if (pageCount == 0)
    txtCurrent.Text = "0";
    else
    txtCurrent.Text = temp.ToString();
    if (e != null)
    {
    PageIndexChanging(pageIndex, e);
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.ToString());
    }
    }

    void InitButton()
    {
    this.FirstButton.IsEnabled = true;
    this.PreButton.IsEnabled = true;
    this.NextButton.IsEnabled = true;
    this.LastButton.IsEnabled = true;
    this.FirstButton.Background = Brushes.Black;
    this.PreButton.Background = Brushes.Black;
    this.NextButton.Background = Brushes.Black;
    this.LastButton.Background = Brushes.Black;

    //总共一页
    if (pageCount < 2)
    {
    this.FirstButton.IsEnabled = false;
    this.PreButton.IsEnabled = false;
    this.NextButton.IsEnabled = false;
    this.LastButton.IsEnabled = false;
    this.FirstButton.Background = Brushes.Red;
    this.PreButton.Background = Brushes.Red;
    this.NextButton.Background = Brushes.Red;
    this.LastButton.Background = Brushes.Red;
    return;
    }

    //第一页
    if (pageIndex == 0)
    {
    this.FirstButton.IsEnabled = false;
    this.PreButton.IsEnabled = false;
    this.FirstButton.Background = Brushes.Red;
    this.PreButton.Background = Brushes.Red;
    return;
    }

    //最后一页
    if (pageIndex+1 == pageCount)
    {
    this.NextButton.IsEnabled = false;
    this.LastButton.IsEnabled = false;
    this.NextButton.Background = Brushes.Red;
    this.LastButton.Background = Brushes.Red;
    }
    }


    /// <summary>
    /// 首页
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void FirstButton_Click(object sender, RoutedEventArgs e)
    {
    pageIndex = 0;
    Init(e);
    }

    /// <summary>
    /// 上一页
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void PreButton_Click(object sender, RoutedEventArgs e)
    {
    --pageIndex;
    Init(e);
    }

    /// <summary>
    /// 下一页
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void NextButton_Click(object sender, RoutedEventArgs e)
    {
    ++pageIndex;
    Init(e);
    }

    /// <summary>
    /// 尾页
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void LastButton_Click(object sender, RoutedEventArgs e)
    {
    pageIndex = pageCount - 1;
    Init(e);
    }
    }
    }


     效果图:

    按钮增加了样式~

  • 相关阅读:
    【ZJOI2007】矩阵游戏
    【洛谷1402】酒店之王
    【洛谷2756】飞行员配对方案问题
    【BZOJ2125】最短路
    【SDOI2018】战略游戏
    【APIO2018】铁人两项
    【FJOI2014】最短路径树问题
    【GXOI/GZOI2019】旅行者
    【Cerc2012】Farm and factory
    【CERC2017】Gambling Guide
  • 原文地址:https://www.cnblogs.com/madehua/p/2287672.html
Copyright © 2011-2022 走看看