Csharp windowform bindingNavigator,bindingSource,DataGridView簡單分頁:首頁,上一頁,下一頁,末頁

简介: /// <summary> /// 塗聚文 2011-10-24 (參考相關網絡資料) /// 締友計算機信息技術有限公司 ///C# Winform 簡單分頁: 首頁,上一頁,下一頁,末頁 /// </summary> public partial class FormDataGridViewPage : Form
    /// <summary>
    /// 塗聚文 2011-10-24 (參考相關網絡資料)
    /// 締友計算機信息技術有限公司
    ///C# Winform 簡單分頁: 首頁,上一頁,下一頁,末頁
    /// </summary>
    public partial class FormDataGridViewPage : Form
    {
        /// <summary>
        /// 每页显示行数
        /// </summary>
        int pageSize = 0; 
        /// <summary>
        /// 总记录数
        /// </summary>
        int nMax = 0;        
        /// <summary>
        /// 页数=总记录数/每页显示行数
        /// </summary>
        int pageCount = 0;   
        /// <summary>
        /// 当前页号
        /// </summary>
        int pageCurrent = 0;  
        /// <summary>
        /// 当前记录行
        /// </summary>
        int nCurrent = 0;     

        DataSet ds = new DataSet();
        DataTable dtInfo = new DataTable();
        AdministrativeAreaListBLL administrativeAreaListBLL = new AdministrativeAreaListBLL();
        AdministrativeAreaListInfo administrativeAreaListInfo = new AdministrativeAreaListInfo();
        FormOperatingStringInfo formOperatingStringInfo = new FormOperatingStringInfo();

        /// <summary>
        /// 
        /// </summary>
        public FormDataGridViewPage()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FormDataGridViewPage_Load(object sender, EventArgs e)
        {
            dtInfo = administrativeAreaListBLL.SelectAdministrativeAreaListDataTable();
            InitDataSet();
        }  
        /// <summary>
        /// 用首页数据填充
        /// 塗聚文
        /// 締友計算機信息技術有限公司
        ///C# Winform 簡單分頁: 首頁,上一頁,下一頁,末頁
        /// </summary>
        private void InitDataSet()
        {
            pageSize = 20;      //设置页面行数
            nMax = dtInfo.Rows.Count;
            pageCount = (nMax / pageSize);    //计算出总页数
            if ((nMax % pageSize) > 0) pageCount++;
            pageCurrent = 1;    //当前页数从1开始
            nCurrent = 0;       //当前记录数从0开始
            LoadData();
        }
        /// <summary>
        /// 用末頁數據填育
        /// 塗聚文
        /// 締友計算機信息技術有限公司
        ///C# Winform 簡單分頁: 首頁,上一頁,下一頁,末頁
        /// </summary>
        private void EndDataSetPage()
        {
            pageSize = 20;      //设置页面行数
            nMax = dtInfo.Rows.Count;
            pageCount = (nMax / pageSize);    //计算出总页数  
            int rou = nMax % pageSize;//取数
            if (rou > 0)
            {
                nCurrent = nMax - (nMax % pageSize);//不是正好整除页码,取余数页
                pageCount++;
            }
            else
            {
                nCurrent = nMax - pageSize;
            }
   
            pageCurrent = pageCount;
            LoadData();
        }
        /// <summary>
        /// 填充DataGridView
        /// 塗聚文
        /// 締友計算機信息技術有限公司
        ///C# Winform 簡單分頁: 首頁,上一頁,下一頁,末頁
        /// </summary>
        private void LoadData()
        {
            int nStartPos = 0;   //当前页面开始记录行
            int nEndPos = 0;     //当前页面结束记录行
            DataTable dtTemp = dtInfo.Clone();   //克隆DataTable结构框架

            if (pageCurrent == pageCount)
            {
                nEndPos = nMax;
            }
            else
            {
                nEndPos = pageSize * pageCurrent;
            }

            nStartPos = nCurrent;
            lblPageCount.Text = "/"+pageCount.ToString(); //共多少頁
            txtCurrentPage.Text = Convert.ToString(pageCurrent);//當前頁


            //从元数据源复制记录行
            for (int i = nStartPos; i < nEndPos; i++)
            {
                dtTemp.ImportRow(dtInfo.Rows[i]);
                nCurrent++;
            }
            bindingSourceInfo.DataSource = dtTemp;
            bindingNavigatorInfo.BindingSource = bindingSourceInfo;
            DataGridViewInfo.DataSource = bindingSourceInfo;
        }
        /// <summary>
        /// 点击的选择页操作
        /// 涂聚文
        /// 締友計算機信息技術有限公司
        ///C# Winform 簡單分頁: 首頁,上一頁,下一頁,末頁
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void bindingNavigatorInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            if (e.ClickedItem.Text == "关闭")
            {
                this.Close();
            }
            if (e.ClickedItem.Text == "首页")
            {
                pageCurrent = 1;
                pageSize = 20;
                InitDataSet();
            }
            if (e.ClickedItem.Text == "末页")
            {
                EndDataSetPage();
            }
            if (e.ClickedItem.Text == "上一页")
            {
                pageCurrent--;
                if (pageCurrent <= 0)
                {
                    MessageBox.Show("已经是第一页,请点击“下一页”查看!");
                    return;
                }
                else
                {
                    nCurrent = pageSize * (pageCurrent - 1);
                }
                LoadData();
            }
            if (e.ClickedItem.Text == "下一页")
            {
                pageCurrent++;
                if (pageCurrent > pageCount)
                {
                    MessageBox.Show("已经是最后一页,请点击“上一页”查看!");
                    return;
                }
                else
                {
                    nCurrent = pageSize * (pageCurrent - 1);
                }
                LoadData();

            }
        }
}


目录
相关文章
|
Oracle 关系型数据库 Java
【资料合集】2019阿里云峰会上海站回顾合集:PDF下载(持续更新中)
2019年7月25日,阿里云峰会上海站在上海世博中心盛大举办,阿里云与企业业务决策者、技术决策者共同分享数字经济时代,通过前沿云计算、大数据、物联网等云端技术帮助新零售、新餐饮、智能营销、智能物流等产业进行赋能升级,从地方政府数字化转型、城市大脑、行业数字化转型几个方面全面解读数字政府2.0的升级策略和政府数字化转型解决方案。
29602 0
IntelliJ Idea 2017 免费激活方法
IntelliJ Idea 2017 免费激活方法 到网站:http://idea.lanyus.com/ 获取注册码。 2.填入下面的license server: http://intellij.
2653 0
|
消息中间件 微服务
MassTransit 实现应用程序间交互
MassTransit 介绍  先看下masstransit 官网介绍:MassTransit 是一个自由、开源、轻量级的消息总线, 用于使用. NET 框架创建分布式应用程序。MassTransit 在现有消息传输上提供了一组广泛的功能, 从而使开发人员能够友好地使用基于消息的会话模式异步连接服务。
2101 0
|
自然语言处理 机器人
阿里云提交工单的方法教程在线呼叫人工客服就这么简单!
遇到问题怎么办?可以提供工单给阿里云客服,如何提交工单?很多用户在提交工单的过程中感觉很麻烦,云吞铺子分享大家一个非常简单的提供工单的方法: 阿里云智能客服了解一下 打开智能客服:https://ia.aliyun.com/,如下图:打开智能客服后,输入“人工”或者“人工客服”,然后点“发送”,智能客服会自动回复“找人工客服”的链接,直接点击即可提交工单了,方不方便?简不简单?来,给云吞铺子点个赞吧! 智能客服是属于机器人客服,非人工的;提交工单对接的是人工客服,对面是真真实实的人,人工客服拥有更多权限,遇到问题找人工客服才是重点。
7410 0
|
前端开发
服务端有异常, 导致: Ajax 请求报错 net::ERR_INCOMPLETE_CHUNKED_ENCODING
服务端有异常, 导致: Ajax 请求报错 net::ERR_INCOMPLETE_CHUNKED_ENCODING 但是,这个 Ajax Http 接口使用浏览器可以直接返回。
2618 0