WinForm下如何进行分页显示,因为需要显示的数据很多,故想采取分页的方式显示。可以前没有这样做过,请大家帮忙,谢谢!

解决方案 »

  1.   

    数据有多少呢,GridView之类的控件本身就有分页的功能吧
      

  2.   

    我常用的方法是
    1 让用户必须选择一个条件进行过滤。
    2 选择前N行。分页可以用SQL语句实现,页码是动态生成的。这在BS下很容易实现(加个超链接就可以了),CS不好实现。
      

  3.   

        /// <summary>
            /// 分页计算部分
            /// </summary>
            private void InitDataSet()
            {
                pageSize = 10;
                nMax = dtInfo.Rows.Count;            pageCount = (nMax / pageSize);    //计算出总页数            if ((nMax % pageSize) > 0) pageCount++;            pageCurrent = 1;    //当前页数从1开始 
                nCurrent = 0;       //当前记录数从0开始            LoadData();
            }
            /// <summary>
            /// 分页数据部分
            /// </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++;
                }
                bdsInfo.DataSource = dtTemp;
                bdnInfo.BindingSource = bdsInfo;
                dgvInfo.DataSource = bdsInfo;
            }
            /// <summary>
            /// 分页UI部分
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void bdnInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
            {            if (e.ClickedItem.Text == "上一页")
                {
                    pageCurrent--;
                    if (pageCurrent <= 0)
                    {
                        pageCurrent++;
                        MessageBox.Show("已经是第一页,请点击“下一页”查看!");
                        return;
                    }
                    else
                    {
                        nCurrent = pageSize * (pageCurrent - 1);
                    }
                    LoadData();
                }
                if (e.ClickedItem.Text == "下一页")
                {
                    pageCurrent++;
                    if (pageCurrent > pageCount)
                    {
                        pageCurrent--;
                        MessageBox.Show("已经是最后一页,请点击“上一页”查看!");
                        return;
                    }
                    else
                    {
                        nCurrent = pageSize * (pageCurrent - 1);
                    }
                    LoadData();
                }
            }
    前台控件:
        private System.Windows.Forms.DataGridView dgvInfo;
            private System.Windows.Forms.BindingSource bdsInfo;
            private System.Windows.Forms.BindingNavigator bdnInfo;
            private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem;
            private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem;
            private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem;
            private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator;
            private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem;
            private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1;
            private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem;
            private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem;
    其他内容自行搜索
      

  4.   

    请参考winform下的分页控件
      

  5.   

    思路:
    1、SQL语句分页,用Datagridview绑定结果集。
    2、界面的上一页、下一页之内的可以做个用户控件,点击按钮背后执行sql返回结果集绑定。
    3、可以写个存储过程来完成分页功能,界面只负责接收参数,然后调用这个存储过程即可。
      

  6.   

    webform会用存储过程进行分页,winform就不会了?
      

  7.   

    本地有一个当前页curIndex,每页显示的行数rowPerPage,两个翻页按钮,初始化都是Enable = false,查询时将两个数字传到后台进行翻页查询,常见关系型数据库都支持行数的选择
      

  8.   

    http://blog.csdn.net/xianfajushi/article/details/7015535
      

  9.   

    gridview本身就自带分页功能的
      

  10.   

    http://download.csdn.net/detail/wolf_y/5034872