zoukankan      html  css  js  c++  java
  • 分页控件的实现

    Demo源文件115

    实现虚拟服务类,提供数据

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace PagingDemo {
        public class VitrualModel {
            public int ID { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
        }
    
        public class VitrulModelPage {
            public int RecordCount { get; set; }
            public List<VitrualModel> VitrualModels { get; set; }
        }
    
        public class VitrualService {
            private List<VitrualModel> list;
    		
            public VitrualService(int count) {
                list = new List<VitrualModel>();
    
                for (int i = 0; i < count; i++) {
                    VitrualModel model = new VitrualModel();
                    model.ID = i + 1;
                    model.Name = getVitrulName(i);
                    model.Age = getVitrulAge(i);
                    list.Add(model);
                }
            }
    		
            public VitrulModelPage GetVitrulModelPage(int first, int last) {
                VitrulModelPage page = new VitrulModelPage();
                page.VitrualModels = list.Where(m => m.ID >= first && m.ID <= last).ToList();
                page.RecordCount = list.Count;
                return page;
            }
    		
            private static string getVitrulName(int r) {
                Random random = new Random(r);
                int length = random.Next(4, 8);
                char[] chars = new char[length];
                for (int i = 0; i < chars.Length; i++) {
                    chars[i] = (char)random.Next(97, 112);
                }
                return new string(chars);
            }
    
            private static int getVitrulAge(int r) {
                Random random = new Random(r);
                return random.Next(15, 55);
            }
        }
    }
    

    实现分页控件

    设计器

    namespace PagingDemo {
        partial class Paging {
            /// <summary> 
            /// 必需的设计器变量。
            /// </summary>
            private System.ComponentModel.IContainer components = null;
    
            /// <summary> 
            /// 清理所有正在使用的资源。
            /// </summary>
            /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
            protected override void Dispose(bool disposing) {
                if (disposing && (components != null)) {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }
    
            #region 组件设计器生成的代码
    
            /// <summary> 
            /// 设计器支持所需的方法 - 不要
            /// 使用代码编辑器修改此方法的内容。
            /// </summary>
            private void InitializeComponent() {
                this.linkFirst = new System.Windows.Forms.LinkLabel();
                this.linkPrevious = new System.Windows.Forms.LinkLabel();
                this.linkNext = new System.Windows.Forms.LinkLabel();
                this.linkLast = new System.Windows.Forms.LinkLabel();
                this.cbxIndex = new System.Windows.Forms.ComboBox();
                this.labelStatus = new System.Windows.Forms.Label();
                this.label1 = new System.Windows.Forms.Label();
                this.SuspendLayout();
                // 
                // linkFirst
                // 
                this.linkFirst.AutoSize = true;
                this.linkFirst.Enabled = false;
                this.linkFirst.Location = new System.Drawing.Point(3, 8);
                this.linkFirst.Name = "linkFirst";
                this.linkFirst.Size = new System.Drawing.Size(29, 12);
                this.linkFirst.TabIndex = 0;
                this.linkFirst.TabStop = true;
                this.linkFirst.Text = "首页";
                this.linkFirst.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkFirst_LinkClicked);
                // 
                // linkPrevious
                // 
                this.linkPrevious.AutoSize = true;
                this.linkPrevious.Enabled = false;
                this.linkPrevious.Location = new System.Drawing.Point(38, 8);
                this.linkPrevious.Name = "linkPrevious";
                this.linkPrevious.Size = new System.Drawing.Size(29, 12);
                this.linkPrevious.TabIndex = 1;
                this.linkPrevious.TabStop = true;
                this.linkPrevious.Text = "上页";
                this.linkPrevious.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkPrevious_LinkClicked);
                // 
                // linkNext
                // 
                this.linkNext.AutoSize = true;
                this.linkNext.Enabled = false;
                this.linkNext.Location = new System.Drawing.Point(73, 8);
                this.linkNext.Name = "linkNext";
                this.linkNext.Size = new System.Drawing.Size(29, 12);
                this.linkNext.TabIndex = 2;
                this.linkNext.TabStop = true;
                this.linkNext.Text = "下页";
                this.linkNext.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkNext_LinkClicked);
                // 
                // linkLast
                // 
                this.linkLast.AutoSize = true;
                this.linkLast.Enabled = false;
                this.linkLast.Location = new System.Drawing.Point(108, 8);
                this.linkLast.Name = "linkLast";
                this.linkLast.Size = new System.Drawing.Size(29, 12);
                this.linkLast.TabIndex = 3;
                this.linkLast.TabStop = true;
                this.linkLast.Text = "尾页";
                this.linkLast.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLast_LinkClicked);
                // 
                // cbxIndex
                // 
                this.cbxIndex.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
                this.cbxIndex.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
                this.cbxIndex.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
                this.cbxIndex.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
                this.cbxIndex.FormattingEnabled = true;
                this.cbxIndex.Location = new System.Drawing.Point(212, 5);
                this.cbxIndex.Name = "cbxIndex";
                this.cbxIndex.Size = new System.Drawing.Size(50, 20);
                this.cbxIndex.TabIndex = 4;
                this.cbxIndex.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
                // 
                // labelStatus
                // 
                this.labelStatus.AutoSize = true;
                this.labelStatus.Location = new System.Drawing.Point(268, 8);
                this.labelStatus.Name = "labelStatus";
                this.labelStatus.Size = new System.Drawing.Size(23, 12);
                this.labelStatus.TabIndex = 5;
                this.labelStatus.Text = "1/1";
                // 
                // label1
                // 
                this.label1.AutoSize = true;
                this.label1.Location = new System.Drawing.Point(153, 8);
                this.label1.Name = "label1";
                this.label1.Size = new System.Drawing.Size(53, 12);
                this.label1.TabIndex = 6;
                this.label1.Text = "当前页:";
                // 
                // Paging
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.Controls.Add(this.label1);
                this.Controls.Add(this.labelStatus);
                this.Controls.Add(this.cbxIndex);
                this.Controls.Add(this.linkLast);
                this.Controls.Add(this.linkNext);
                this.Controls.Add(this.linkPrevious);
                this.Controls.Add(this.linkFirst);
                this.Name = "Paging";
                this.Size = new System.Drawing.Size(306, 28);
                this.ResumeLayout(false);
                this.PerformLayout();
    
            }
    
            #endregion
    
            private System.Windows.Forms.LinkLabel linkFirst;
            private System.Windows.Forms.LinkLabel linkPrevious;
            private System.Windows.Forms.LinkLabel linkNext;
            private System.Windows.Forms.LinkLabel linkLast;
            private System.Windows.Forms.ComboBox cbxIndex;
            private System.Windows.Forms.Label labelStatus;
            private System.Windows.Forms.Label label1;
        }
    }
    

    逻辑

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace PagingDemo {
        /// <summary>
        /// By Jusfr 2012-4-24, 盗版不究
        /// </summary>
        public partial class Paging : UserControl {
            public event EventHandler PageIndexChanged;
    
            private bool _initialize = false;
            private int _pageSize = 20;
            private int _recordCount = 0;
            private int _pageIndex = 0;
            private int _pageCount = 1;
    
            /// <summary>
            /// 获取或设置页面容量
            /// </summary>
            public int PageSize {
                get { return _pageSize; }
                set {
                    if (_pageSize != value) {
                        OnPageSizeChanging(_pageSize, value);
                        _pageSize = value;
                        OnPageSizeChanged();
                    }
                }
            }
    
            //页面容量变化,如果已经翻页,则需要重新计算当前页码
            protected void OnPageSizeChanging(int oldSize, int newSize) {
                if (_pageIndex != 0) {
                    _pageIndex = _pageIndex * oldSize / newSize;
                }
            }
    
            //页面容量变化,ComboxBox需要重新填充
            protected void OnPageSizeChanged() {
                _initialize = true;
                _pageCount = Math.Max(1, (int)Math.Ceiling((double)_recordCount / _pageSize));
                cbxIndex.DataSource = Enumerable.Range(1, _pageCount).ToList();
                cbxIndex.SelectedIndex = _pageIndex;
                _initialize = false;
    
                labelStatus.Text = String.Format("{0}/{1}", _pageIndex + 1, _pageCount);
                linkFirst.Enabled = _pageIndex != 0;
                linkPrevious.Enabled = _pageIndex != 0;
                linkNext.Enabled = _pageIndex != _pageCount - 1;
                linkLast.Enabled = _pageIndex != _pageCount - 1;
            }
    
            /// <summary>
            /// 获取或设置页面记录总数
            /// </summary>
            [Browsable(false)]
            public int RecordCount {
                get { return _recordCount; }
                set {
                    if (_recordCount != value) {
                        _recordCount = value;
                        OnRecordCountChanged();
                    }
                }
            }
    
            //记录总数变化,视为数据刷新,重置至起始状态
            protected void OnRecordCountChanged() {
                _initialize = true;
                _pageCount = Math.Max(1, (int)Math.Ceiling((double)_recordCount / _pageSize));
                cbxIndex.DataSource = Enumerable.Range(1, _pageCount).ToList();
                _initialize = false;
                _pageIndex = 0;
    
                labelStatus.Text = String.Format("{0}/{1}", _pageIndex + 1, _pageCount);
                linkFirst.Enabled = false;
                linkPrevious.Enabled = false;
                linkNext.Enabled = _pageIndex != _pageCount - 1;
                linkLast.Enabled = _pageIndex != _pageCount - 1;
            }
    
            /// <summary>
            /// 获取当前页码,从零开始
            /// </summary>
            [Browsable(false)]
            public int PageIndex {
                get { return _pageIndex; }
                private set {
                    if (_pageIndex != value) {
                        _pageIndex = value;
    
                        _initialize = true;
                        cbxIndex.SelectedIndex = _pageIndex;
                        _initialize = false;
                        OnPageIndexChanged(EventArgs.Empty);
                    }
                }
            }
    
            //翻页了,通知注册的方法
            protected void OnPageIndexChanged(EventArgs e) {
                labelStatus.Text = String.Format("{0}/{1}", _pageIndex + 1, _pageCount);
                linkFirst.Enabled = _pageIndex != 0;
                linkPrevious.Enabled = _pageIndex != 0;
                linkNext.Enabled = _pageIndex != _pageCount - 1;
                linkLast.Enabled = _pageIndex != _pageCount - 1;
    
                if (PageIndexChanged != null) {
                    PageIndexChanged(this, e);
                }
            }
    
            /// <summary>
            /// 获取当前第一条记录的行号
            /// </summary>
            [Browsable(false)]
            public int FirstRecordNumber {
                get {
                    return _pageIndex * _pageSize + 1;
                }
            }
    
            /// <summary>
            /// 获取当前最后一条记录的行号
            /// </summary>
            [Browsable(false)]
            public int LastRecrodNumber {
                get {
                    return (_pageIndex + 1) * _pageSize;
                }
            }
    
            public Paging() {
                InitializeComponent();
                _initialize = true;
                cbxIndex.DataSource = new List<int> { 1 };
            }
    
            //首页
            private void linkFirst_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
                PageIndex = 0;
            }
    
            //前一页
            private void linkPrevious_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
                PageIndex -= 1;
            }
    
            //后一页
            private void linkNext_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
                PageIndex += 1;
            }
    
            //末页
            private void linkLast_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
                PageIndex = _pageCount - 1;
            }
    
            //ComboBox
            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {
                if (!_initialize) {
                    ComboBox box = sender as ComboBox;
                    PageIndex = box.SelectedIndex;
                }
            }
        }
    }
    

    Demo

    设计器

    namespace PagingDemo {
        partial class Form3 {
            /// <summary>
            /// Required designer variable.
            /// </summary>
            private System.ComponentModel.IContainer components = null;
    
            /// <summary>
            /// Clean up any resources being used.
            /// </summary>
            /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
            protected override void Dispose(bool disposing) {
                if (disposing && (components != null)) {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }
    
            #region Windows Form Designer generated code
    
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent() {
                this.dataGridView1 = new System.Windows.Forms.DataGridView();
                this.button1 = new System.Windows.Forms.Button();
                this.textBox1 = new System.Windows.Forms.TextBox();
                this.label1 = new System.Windows.Forms.Label();
                this.label2 = new System.Windows.Forms.Label();
                this.textBox2 = new System.Windows.Forms.TextBox();
                this.button2 = new System.Windows.Forms.Button();
                this.paging1 = new PagingDemo.Paging();
                ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
                this.SuspendLayout();
                // 
                // dataGridView1
                // 
                this.dataGridView1.AllowUserToAddRows = false;
                this.dataGridView1.AllowUserToDeleteRows = false;
                this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
                this.dataGridView1.Location = new System.Drawing.Point(12, 53);
                this.dataGridView1.Name = "dataGridView1";
                this.dataGridView1.ReadOnly = true;
                this.dataGridView1.RowTemplate.Height = 23;
                this.dataGridView1.Size = new System.Drawing.Size(581, 277);
                this.dataGridView1.TabIndex = 0;
                // 
                // button1
                // 
                this.button1.Location = new System.Drawing.Point(178, 10);
                this.button1.Name = "button1";
                this.button1.Size = new System.Drawing.Size(75, 23);
                this.button1.TabIndex = 2;
                this.button1.Text = "设置";
                this.button1.UseVisualStyleBackColor = true;
                this.button1.Click += new System.EventHandler(this.button1_Click);
                // 
                // textBox1
                // 
                this.textBox1.Location = new System.Drawing.Point(412, 12);
                this.textBox1.Name = "textBox1";
                this.textBox1.Size = new System.Drawing.Size(100, 21);
                this.textBox1.TabIndex = 3;
                this.textBox1.Text = "45";
                // 
                // label1
                // 
                this.label1.AutoSize = true;
                this.label1.Location = new System.Drawing.Point(353, 15);
                this.label1.Name = "label1";
                this.label1.Size = new System.Drawing.Size(53, 12);
                this.label1.TabIndex = 4;
                this.label1.Text = "记录总数";
                // 
                // label2
                // 
                this.label2.AutoSize = true;
                this.label2.Location = new System.Drawing.Point(13, 15);
                this.label2.Name = "label2";
                this.label2.Size = new System.Drawing.Size(53, 12);
                this.label2.TabIndex = 5;
                this.label2.Text = "分页容量";
                // 
                // textBox2
                // 
                this.textBox2.Location = new System.Drawing.Point(72, 12);
                this.textBox2.Name = "textBox2";
                this.textBox2.Size = new System.Drawing.Size(100, 21);
                this.textBox2.TabIndex = 6;
                // 
                // button2
                // 
                this.button2.Location = new System.Drawing.Point(518, 12);
                this.button2.Name = "button2";
                this.button2.Size = new System.Drawing.Size(75, 23);
                this.button2.TabIndex = 7;
                this.button2.Text = "刷新";
                this.button2.UseVisualStyleBackColor = true;
                this.button2.Click += new System.EventHandler(this.button2_Click);
                // 
                // paging1
                // 
                this.paging1.Location = new System.Drawing.Point(15, 337);
                this.paging1.Name = "paging1";
                this.paging1.PageSize = 10;
                this.paging1.RecordCount = 0;
                this.paging1.Size = new System.Drawing.Size(306, 28);
                this.paging1.TabIndex = 8;
                this.paging1.PageIndexChanged += new System.EventHandler(this.paging1_PageIndexChanged);
                // 
                // Form3
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize = new System.Drawing.Size(605, 376);
                this.Controls.Add(this.paging1);
                this.Controls.Add(this.button2);
                this.Controls.Add(this.textBox2);
                this.Controls.Add(this.label2);
                this.Controls.Add(this.label1);
                this.Controls.Add(this.textBox1);
                this.Controls.Add(this.button1);
                this.Controls.Add(this.dataGridView1);
                this.Name = "Form3";
                this.Text = "Form3";
                this.Load += new System.EventHandler(this.Form2_Load);
                ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
                this.ResumeLayout(false);
                this.PerformLayout();
    
            }
    
            #endregion
    
            private System.Windows.Forms.DataGridView dataGridView1;
            private System.Windows.Forms.Button button1;
            private System.Windows.Forms.TextBox textBox1;
            private System.Windows.Forms.Label label1;
            private System.Windows.Forms.Label label2;
            private System.Windows.Forms.TextBox textBox2;
            private System.Windows.Forms.Button button2;
            private Paging paging1;
        }
    }

    逻辑

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace PagingDemo {
        public partial class Form3 : Form {
    
            private VitrualService service;
    
            public Form3() {
                InitializeComponent();
            }
    
            private void Form2_Load(object sender, EventArgs e) {
                textBox2.Text = paging1.PageSize.ToString();
            }
    
            private void query() {
                try {
                    int recordCount = Int32.Parse(textBox1.Text);
                    int pageSize = Int32.Parse(textBox2.Text);
                    service = new VitrualService(recordCount);
                    VitrulModelPage page = service.GetVitrulModelPage(paging1.FirstRecordNumber, paging1.LastRecrodNumber);
                    paging1.RecordCount = page.RecordCount;
                    dataGridView1.DataSource = page.VitrualModels;
                }
                catch (Exception ex) {
                    MessageBox.Show(ex.Message);
                }
            }
    
            private void button1_Click(object sender, EventArgs e) {
                try {
                    int pageSize = Int32.Parse(textBox2.Text);
                    paging1.PageSize = pageSize;
                    //query();
                }
                catch (Exception ex) {
                    MessageBox.Show(ex.Message);
                }
            }
    
            private void button2_Click(object sender, EventArgs e) {
                query();
            }
    
            private void paging1_PageIndexChanged(object sender, EventArgs e) {
                query();
            }
        }
    }
    
  • 相关阅读:
    nacos启动startup.cmd一闪而过
    阿里云轻量应用服务中的linux使用
    Mapper映射文件的文件头
    vue.js:634 [Vue warn]: Cannot find element: #app7
    使用idea连接数据库时报错 Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezon
    调用本地摄像头进行拍照
    人人开源框架登录无验证码,控制台报错,验证码503 Service Unavailable
    报错:Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
    报错:com.alibaba.nacos.api.exception.NacosException: java.lang.reflect.Invocation
    报错Parameter 0 of method loadBalancerWebClientBuilderBeanPostProcessor in org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerBeanPostProcessorAuto
  • 原文地址:https://www.cnblogs.com/Jusfr/p/2473229.html
Copyright © 2011-2022 走看看