• 分页功能


    前台xaml文件

    <Window x:Class="Supplier.UserI"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Supplier"
    Title="查看用户" Height="500" Width="440" Loaded="Window_Loaded" WindowStartupLocation="CenterScreen">
    <Grid >
    <Grid.Resources>
    <local:TypeConvert x:Key="typeConvert"/>
    <DataTemplate x:Key="oprate" DataType="User">
    <StackPanel Orientation="Horizontal">
    <Button Tag="{Binding}" Click="updateUser" Content="修改" Background="Gray" Width="40" Foreground="White"/>
    <Button Tag="{Binding}" Click="deleteUser" Content="删除" Background="red" Width="40" Foreground="White"/>
    </StackPanel>
    </DataTemplate>
    <!--<DataTemplate x:Key="permis" DataType="User" >
    <ComboBox x:Name="permission" SelectedIndex="{Binding Type}" >
    <TextBlock Text="所有操作" />
    <TextBlock Text="查看" Margin="10,0,0,0" />
    </ComboBox>
    </DataTemplate>-->
    </Grid.Resources>
    <Grid.RowDefinitions>
    <RowDefinition Height="50"/>
    <RowDefinition Height="*"/>
    <RowDefinition Height="100"/>
    </Grid.RowDefinitions>
    <TextBlock Grid.Row="0" Text="用户管理" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="18" FontStyle="Normal" Foreground="Blue"/>
    <Button Click="addUser" Grid.Row="0" Content="添加" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,10,0" Background="SkyBlue" Width="50" Foreground="White"/>
    <!--Beige-->
    <ListView x:Name="grid" Grid.Row="1" Margin="10,0,10,10">
    <ListView.View>
    <GridView>
    <GridViewColumn Header="序号" Width="60" DisplayMemberBinding="{Binding Number}"/>
    <GridViewColumn Header="用户名" Width="80" DisplayMemberBinding="{Binding UserName}"/>
    <GridViewColumn Header="权限" Width="110" DisplayMemberBinding="{Binding Type,Converter={StaticResource typeConvert}}"/>
    <GridViewColumn Header="操作" Width="120" CellTemplate="{StaticResource oprate}"/>
    </GridView>
    </ListView.View>
    </ListView>
    <Grid Grid.Row="2">
    <Button Content="上一页" Height="23" HorizontalAlignment="Left" Margin="37,0,0,0" Name="button7" VerticalAlignment="Top" Width="65" Click="PreviousPage" />
    <Button Content="下一页" Height="23" HorizontalAlignment="Left" Margin="108,0,0,0" Name="button8" VerticalAlignment="Top" Width="59" Click="NextPage" />
    <Label Content="转到" Height="28" HorizontalAlignment="Left" Margin="173,0,0,0" Name="label6" VerticalAlignment="Top" />
    <TextBox KeyDown="textBox1_KeyDown" Height="23" HorizontalAlignment="Left" Margin="212,0,0,0" Name="textBox1" VerticalAlignment="Top" Width="53" />
    <Button Content="GO" Height="23" HorizontalAlignment="Left" Margin="298,0,0,0" Name="button9" VerticalAlignment="Top" Width="96" Click="JumpPage" />
    <Label Content="页" Height="28" HorizontalAlignment="Left" Margin="269,0,0,0" Name="label7" VerticalAlignment="Top" />
    <Label Height="28" HorizontalAlignment="Left" Margin="120,40,0,0" Name="label8" VerticalAlignment="Top" Content="【第" />
    <Label Content="1" Height="28" HorizontalAlignment="Left" Margin="157,40,0,0" Name="label1" VerticalAlignment="Top" />
    <Label Content="页】" Height="28" HorizontalAlignment="Left" Margin="176,40,0,0" Name="label10" VerticalAlignment="Top" />
    <Label Content="【共" Height="28" HorizontalAlignment="Left" Margin="242,40,0,0" Name="label11" VerticalAlignment="Top" />
    <Label Content="1" Height="28" HorizontalAlignment="Left" Margin="280,40,0,0" Name="label2" VerticalAlignment="Top" />
    <Label Content="页】" Height="28" HorizontalAlignment="Left" Margin="298,40,0,0" Name="label13" VerticalAlignment="Top" />
    </Grid>

    </Grid>
    </Window>

    后台

    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.Shapes;
    using System.Data;

    namespace Supplier
    {
    /// <summary>
    /// Edit.xaml 的交互逻辑
    /// </summary>
    public partial class UserI : Window
    {
    public int pageSize = Global.PageSize; //每页记录数
    private int recordsum = 0; //表中记录总数
    private int PageSum = 0; //总页数
    private int CurrentPage = 1; //当前页
    private List<User> CurrentList;

    public UserI()
    {
    InitializeComponent();
    this.Topmost = true;//顶置窗口
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
    //pageIndex 当前页的序号
    recordsum = UserManager.getCount();

    //判断总页数
    if (recordsum % pageSize == 0)
    PageSum = recordsum / pageSize;
    else
    PageSum = recordsum / pageSize + 1;

    DataGridBind(CurrentPage);
    }
    #region 用户操作
    private void updateUser(object sender, RoutedEventArgs e)
    {
    UserEdit userEdit = new UserEdit();
    Button bt = e.OriginalSource as Button;
    User u = bt.Tag as User;
    userEdit.user = u;
    userEdit.hasType = true;
    bool? result = userEdit.ShowDialog();
    if (result != null && (bool)result)
    {
    Window_Loaded(sender, e);
    DataGridBind(CurrentPage);
    }
    }
    private void deleteUser(object sender, RoutedEventArgs e)
    {
    if (MessageBox.Show("您确定要删除该用户吗?", "系统提示", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
    {
    UserEdit userEdit = new UserEdit();
    Button bt = e.OriginalSource as Button;
    User u = bt.Tag as User;
    UserManager.delete(u.ID);
    Window_Loaded(sender, e);
    DataGridBind(CurrentPage);
    }
    }

    private void addUser(object sender, RoutedEventArgs e)
    {
    UserAdd userAdd = new UserAdd();
    userAdd.hasType = true;
    bool? result = userAdd.ShowDialog();
    if (result != null && (bool)result)
    {
    Window_Loaded(sender, e);
    DataGridBind(PageSum);
    }
    }
    #endregion
    #region 分页

    private void DataGridBind(int pageIndex)
    {
    if (pageIndex > 0)
    {
    CurrentList = UserManager.getList((pageIndex - 1) * pageSize, pageSize);
    this.grid.ItemsSource = CurrentList;
    CurrentPage = pageIndex;
    label1.Content = CurrentPage;
    label2.Content = PageSum;
    }
    }

    /// <summary>
    /// 上一页
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void PreviousPage(object sender, RoutedEventArgs e)
    {
    if (CurrentPage > 1)
    DataGridBind(CurrentPage - 1);
    }
    /// <summary>
    /// 下一页
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void NextPage(object sender, RoutedEventArgs e)
    {
    if (CurrentPage < PageSum)
    DataGridBind(CurrentPage + 1);
    }
    /// <summary>
    /// 跳转页
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void JumpPage(object sender, RoutedEventArgs e)
    {
    int page = 0;
    if (int.TryParse(textBox1.Text, out page))
    {
    if(page<=PageSum)
    DataGridBind(page);
    else
    {
    MessageBox.Show("对不起,您输入的页面超过当前最大页数", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
    this.textBox1.Clear();
    }
    }

    }

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.Key == Key.Enter)
    JumpPage(sender, e);
    }
    #endregion


    }
    }

    数据操作model 层

    /// <summary>
    /// 获取第skipNum到(skipNum+pageSize)内的记录
    /// </summary>
    /// <param name="skipNum"></param>
    /// <param name="pageSize"></param>
    /// <returns></returns>
    public static List<User> getList(int skipNum, int pageSize)
    {
    string sql = "select top " + pageSize + " Number= row_number() over(order by id asc), * from Users where id not in "
    + "(select top " + skipNum + " id from Users order by id asc) order by id asc";
    DataTable dataTable = DbConHelper.ExecuteDataTable(sql);
    List<User> userList = new List<User>();
    User userModel;
    if (dataTable.Rows.Count > 0)
    {
    int page = skipNum / pageSize+1;
    foreach (DataRow row in dataTable.Rows)
    {
    userModel = new User()
    {
    ID = row["ID"].ToString().Trim(),
    Number = (int.Parse(row["Number"].ToString().Trim()) * page).ToString(),
    Password = row["Password"].ToString().Trim(),
    Type = row["Type"].ToString().Trim(),
    UserName = row["UserName"].ToString().Trim()

    };
    userList.Add(userModel);
    }
    }
    return userList;

    }

    public static int getCount()
    {
    string sql = "select count(*) from Users";
    return (int)DbConHelper.ExecuteScalar(sql);

    }

  • 相关阅读:
    js 工厂模式、简单模式、抽象模式
    Angular 框架介绍
    Node.js从入门到实战ECMAScript6一页纸总结(很大的一页纸)
    ECMAScript 5和ECMAScript6的新特性以及浏览器支持情况
    JSONP 教程
    jQuery ajax() 方法
    AJAX异步的 JavaScript
    自动化构建工具--gulp的初识和使用
    front-end 前端发展学习路线参考图
    Webpack 常用命令总结以及常用打包压缩方法
  • 原文地址:https://www.cnblogs.com/sjqq/p/8376289.html
Copyright © 2020-2023  润新知