• 数据库之 :分页技术:之点击一次取一次数据


    前台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
  • 相关阅读:
    浅谈页面中的焦点
    简单的jQuery幻灯片实现
    从is(":checked")说起
    通过Javascript得到URL中的参数(query string)
    Javascript设置对象属性为"只读"
    Javascript判断两个日期是否相等
    利用HttpWebRequest访问WebApi
    利用Newtonsoft.Json实现Json序列化与反序列化
    在ASP.NET MVC中以post方式传递数组参数的示例
    SQL Server 锁表、查询被锁表、解锁相关语句
  • 原文地址:https://www.cnblogs.com/lizhenlin/p/5877289.html
Copyright © 2020-2023  润新知