zoukankan      html  css  js  c++  java
  • DevExpress 用户控件 分页(中)

    说明:

    1)具体调用请关注 看DevExpress 用户控件 分页(下)

    datanavi_ButtonClick 是DataNavigator的ButtonClikc事件

    视图设计器:


    分页用户控件后台代码如下:

     
    
    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;  
    using DevExpress.XtraEditors;  
      
    namespace CYSoft.TS.UI.StudentInfo  
    {  
        public partial class PageCtrl : DevExpress.XtraEditors.XtraUserControl  
        {  
      
            /// <summary>  
            /// 自定义事件 当前页改变事件  
            /// </summary>  
            public event EventHandler CurrentPageChange;  
     
            #region 定义分页 字段和属性  
            private int m_recordCount = 0;  
            /// <summary>  
            /// 数据行总数  
            /// </summary>  
            public int recordCount  
            {  
                get { return m_recordCount; }  
                set  
                {  
                    SetFormCtrlEnable();  
                    this.m_recordCount = value;  
                }  
            }  
      
            private int m_pageSize = 20;  
            /// <summary>  
            /// 每页显示的数据行数  
            /// </summary>  
            public int pageSize  
            {  
                get { return m_pageSize; }  
                set { this.m_pageSize = value; }  
            }  
      
            private int m_pageIndex = 1;  
            /// <summary>  
            /// 当前页  
            /// </summary>  
            public int pageIndex  
            {  
                get { return m_pageIndex; }  
                set { this.m_pageIndex = value; }  
            }  
      
            private int m_pageCount = 0;  
            /// <summary>  
            /// 总页数  
            /// </summary>  
            public int pageCount  
            {  
                get  
                {  
                    if (m_pageSize != 0)  
                    {  
                        m_pageCount = GetPageCount();  
                    }  
                    return m_pageCount;  
                }  
      
            }  
      
            /// <summary>  
            /// 获取总页数  
            /// </summary>  
            /// <returns></returns>  
            private int GetPageCount()  
            {  
                if (pageSize == 0)  
                {  
                    return 0;  
                }  
                int num = 1;  
                if (recordCount % pageSize == 0)  
                {  
                    num = recordCount / pageSize;  
                }  
                else  
                {  
                    num = recordCount / pageSize + 1;  
                }  
                return num;  
            }  
            #endregion  
      
            public PageCtrl()  
            {  
                InitializeComponent();  
            }  
      
            /// <summary>  
            /// 设置DataNavigator按钮全部可用  
            /// </summary>  
            private void SetFormCtrlEnable()  
            {  
                this.datanavi.Buttons.CustomButtons[0].Enabled = true;  
                this.datanavi.Buttons.CustomButtons[1].Enabled = true;  
                this.datanavi.Buttons.CustomButtons[2].Enabled = true;  
                this.datanavi.Buttons.CustomButtons[3].Enabled = true;  
            }  
      
            //DataNavigator 点击        
            private void datanavi_ButtonClick(object sender, NavigatorButtonClickEventArgs e)  
            {  
                ShowEvent("ButtonClick", e.Button);  
            }  
     
            #region 第一页、上一页、下一页、最后一页  
            /// <summary>  
            /// 第一页、上一页、下一页、最后一页 点击事件  
            /// </summary>  
            /// <param name="eventString"></param>  
            /// <param name="nbb"></param>  
            void ShowEvent(string eventString, NavigatorButtonBase nbb)  
            {  
                switch (nbb.Tag.ToString())  
                {  
                    case "First":  
                        First();  
                        break;  
                    case "PrePage":  
                        PrePage();  
                        break;  
                    case "NextPage":  
                        NextPage();  
                        break;  
                    case "Last":  
                        Last();  
                        break;  
                    default:  
                        break;  
                }  
                DrawControl(true);  
            }  
      
            private void First()  
            {  
                m_pageIndex = 1;  
            }  
            private void PrePage()  
            {  
                m_pageIndex = Math.Max(1, m_pageIndex - 1);  
            }  
            private void NextPage()  
            {  
                m_pageIndex = Math.Min(pageCount, m_pageIndex + 1);  
            }  
            private void Last()  
            {  
                m_pageIndex = pageCount;  
            }  
            #endregion  
      
            /// <summary>  
            /// 设置DataNavigator按钮是否可用  
            /// </summary>  
            /// <param name="callEvent">是否当前页</param>  
            private void DrawControl(bool callEvent)  
            {  
                if (callEvent && CurrentPageChange != null)  
                {  
                    //当前页事件  
                    CurrentPageChange(this, null);  
                }  
                //设置按钮全部可用  
                this.SetFormCtrlEnable();  
                //只有一页  
                if (recordCount <= 1)  
                {  
                    this.datanavi.Buttons.CustomButtons[0].Enabled = false;  
                    this.datanavi.Buttons.CustomButtons[1].Enabled = false;  
                    this.datanavi.Buttons.CustomButtons[2].Enabled = false;  
                    this.datanavi.Buttons.CustomButtons[3].Enabled = false;  
                }//第一页  
                else if (pageIndex <= 1)  
                {  
                    this.datanavi.Buttons.CustomButtons[0].Enabled = false;  
                    this.datanavi.Buttons.CustomButtons[1].Enabled = false;  
                }//最后一页  
                else if (pageIndex >= pageCount)  
                {  
                    this.datanavi.Buttons.CustomButtons[2].Enabled = false;  
                    this.datanavi.Buttons.CustomButtons[3].Enabled = false;  
                }  
      
            }  
      
            /// <summary>  
            /// 加载LableControl  
            /// </summary>  
            private void ShowLableInfo()  
            {  
                if (!this.Created)  
                {  
                    return;  
                }  
                this.BeginInvoke((MethodInvoker)delegate  
                {  
                    try  
                    {  
                        if (!DesignMode)  
                        {  
                            this.labelControl1.Text = "总行数:" + recordCount + "      当前页:" + pageIndex + "/" + pageCount + "    ";  
                        }  
                    }  
                    catch { }  
                });  
            }  
      
            /// <summary>  
            /// 分页控件加载  
            /// </summary>  
            /// <param name="count">数据总行数</param>  
            private void DrawControl(int count)  
            {  
                m_recordCount = count;  
                //设置DataNavigator  
                DrawControl(false);  
                //设置LabControl  
                ShowLableInfo();  
            }  
      
            /// <summary>  
            /// 设置分页数据控件  
            /// </summary>  
            /// <param name="currentPageIndex">当前页</param>  
            /// <param name="pageSize2">每页显示行数</param>  
            /// <param name="recordTotal">总行数</param>  
            public void SetPageCtrl(int currentPageIndex, int pageSize2, int recordTotal)  
            {  
                pageIndex = currentPageIndex;  
                recordCount = recordTotal;  
                pageSize = pageSize2;  
      
                DrawControl(recordTotal);  
      
            }  
      
        }  
    }  
    

      

     
  • 相关阅读:
    [one day one question] safari缓存太厉害
    对工厂方法模式的一些思考(2)
    对工厂方法模式的一些思考(java语法表示)
    [选译]MySQL5.7以上Zip版官方安装文档
    clojure 使用阿里云仓库
    对jbox2d引擎的一些回顾与思考(swing实现demo)
    定位
    空白空间及溢出的处理
    BFC
    高度自适应
  • 原文地址:https://www.cnblogs.com/marblemm/p/7364353.html
Copyright © 2011-2022 走看看