zoukankan      html  css  js  c++  java
  • 数据库之 :分页技术:之点击一次取一次数据

    前台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>
    View Code

    后台

    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
    
    
        }
    }
    View Code

    数据操作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);
    
            }
    View Code
  • 相关阅读:
    LeetCode——Generate Parentheses
    LeetCode——Best Time to Buy and Sell Stock IV
    LeetCode——Best Time to Buy and Sell Stock III
    LeetCode——Best Time to Buy and Sell Stock
    LeetCode——Find Minimum in Rotated Sorted Array
    Mahout实现基于用户的协同过滤算法
    使用Java对文件进行解压缩
    LeetCode——Convert Sorted Array to Binary Search Tree
    LeetCode——Missing Number
    LeetCode——Integer to Roman
  • 原文地址:https://www.cnblogs.com/lizhenlin/p/5877289.html
Copyright © 2011-2022 走看看