• winform ListView和DataGridView实现分页


    用到的控件有

    code:

    listviewPaging

    复制代码
    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;
    using System.Data.SqlClient;
    
    namespace DataGridViewPage1
    {
        public partial class ListViewPaging : Form
        {
            int pageSize = 0;     //每页显示行数
            int nMax = 0;         //总记录数
            int pageCount = 0;    //页数=总记录数/每页显示行数
            int pageCurrent = 0;   //当前页号
            int nCurrent = 0;      //当前记录行
            DataSet ds = new DataSet();
            DataTable dtInfo = new DataTable();
    
            public ListViewPaging()
            {
                InitializeComponent();
                BindData();
            }
    
            void BindData()
            {
    
                string strConn = "SERVER=.;DATABASE=WL_JLB;UID=sa;PWD=123456";   //数据库连接字符串
                SqlConnection conn = new SqlConnection(strConn);
                conn.Open();
                string strSql = "SELECT * FROM dbo.WlcSys_Model";
                SqlDataAdapter sda = new SqlDataAdapter(strSql, conn);
                sda.Fill(ds, "ds");
                conn.Close();
                dtInfo = ds.Tables[0];
                InitDataSet();
    
            }
    
            private void InitDataSet()
            {
                pageSize = 20;      //设置页面行数
                nMax = dtInfo.Rows.Count;
    
                pageCount = (nMax / pageSize);    //计算出总页数
    
                if ((nMax % pageSize) > 0) pageCount++;
    
                pageCurrent = 1;    //当前页数从1开始
                nCurrent = 0;       //当前记录数从0开始
    
                LoadData();
            }
    
            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;
    
                //lblPageCount2.Text = pageCount.ToString();
                txtCurrentPage.Text = Convert.ToString(pageCurrent);
                lblPageCount.Text = pageCount.ToString();
    
                this.listView1.Items.Clear();
                //从元数据源复制记录行
                for (int i = nStartPos; i < nEndPos; i++)
                {
                    dtTemp.ImportRow(dtInfo.Rows[i]);
    
                    //dtInfo.Rows[i].ItemArray[0]
                    //14
                    //dtInfo.Rows[i].ItemArray[2]
                    //"在线对应参数设置"
    
                    var lvi = new ListViewItem(new string[] { dtInfo.Rows[i].ItemArray[0].ToString(),
                        dtInfo.Rows[i].ItemArray[2].ToString()
                            });
    
                    listView1.Items.Add(lvi);
                    nCurrent++;
                }
                bdsInfo.DataSource = dtTemp;
                bdnInfo.BindingSource = bdsInfo;
                //listView1.DataSource = bdsInfo;
            }
    
            private void bdnInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
            {
                if (e.ClickedItem.Text == "关闭")
                {
                    this.Close();
                }
                if (e.ClickedItem.Text == "上一页")
                {
                    pageCurrent--;
                    if (pageCurrent <= 0)
                    {
                        MessageBox.Show("已经是第一页,请点击“下一页”查看!");
                        pageCurrent++;
                        return;
                    }
                    else
                    {
                        nCurrent = pageSize * (pageCurrent - 1);
                    }
    
                    LoadData();
                }
                if (e.ClickedItem.Text == "下一页")
                {
                    pageCurrent++;
                    if (pageCurrent > pageCount)
                    {
                        MessageBox.Show("已经是最后一页,请点击“上一页”查看!");
                        pageCurrent--;
                        return;
                    }
                    else
                    {
                        nCurrent = pageSize * (pageCurrent - 1);
                    }
                    LoadData();
                }
                if (e.ClickedItem.Text == "go")
                {
                    int a = 0;
                    int.TryParse(txtCurrentPage.Text, out a);
                    if (a == 0)
                    {
                        MessageBox.Show("只能输入正整数!");
                        return;
                    }
                    //pageCurrent = int.Parse(txtCurrentPage.Text);
                    pageCurrent = a;
                    if (pageCurrent <= 0)
                    {
                        MessageBox.Show("已经是第一页,请点击“下一页”查看!");
                        return;
                    }
                    if (pageCurrent > pageCount)
                    {
                        MessageBox.Show("已经是最后一页,请点击“上一页”查看!");
                        return;
                    }
                    nCurrent = pageSize * (pageCurrent - 1);
                    LoadData();
                }
            }
        }
    }
    复制代码

    datagridviewpaging

    复制代码
    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;
    using System.Data.SqlClient;
    
    namespace DataGridViewPage1
    {
        public partial class Form1 : Form
        {
            int pageSize = 0;     //每页显示行数
            int nMax = 0;         //总记录数
            int pageCount = 0;    //页数=总记录数/每页显示行数
            int pageCurrent = 0;   //当前页号
            int nCurrent = 0;      //当前记录行
            DataSet ds = new DataSet();
            DataTable dtInfo = new DataTable();
    
            public Form1()
            {
                InitializeComponent();
                BindData();
            }
    
    
            void BindData()
            {
    
                string strConn = "SERVER=.;DATABASE=WL_JLB;UID=sa;PWD=123456";   //数据库连接字符串
                SqlConnection conn = new SqlConnection(strConn);
                conn.Open();
                string strSql = "SELECT * FROM dbo.WlcSys_Model";
                SqlDataAdapter sda = new SqlDataAdapter(strSql, conn);
                sda.Fill(ds, "ds");
                conn.Close();
                dtInfo = ds.Tables[0];
                InitDataSet();
    
            }
    
            private void InitDataSet()
            {
                pageSize = 20;      //设置页面行数
                nMax = dtInfo.Rows.Count;
    
                pageCount = (nMax / pageSize);    //计算出总页数
    
                if ((nMax % pageSize) > 0) pageCount++;
    
                pageCurrent = 1;    //当前页数从1开始
                nCurrent = 0;       //当前记录数从0开始
    
                LoadData();
            }
    
            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;
    
                //lblPageCount2.Text = pageCount.ToString();
                txtCurrentPage.Text = Convert.ToString(pageCurrent);
                lblPageCount.Text = pageCount.ToString();
    
                //从元数据源复制记录行
                for (int i = nStartPos; i < nEndPos; i++)
                {
                    dtTemp.ImportRow(dtInfo.Rows[i]);
                    nCurrent++;
                }
                bdsInfo.DataSource = dtTemp;
                bdnInfo.BindingSource = bdsInfo;
                dgvInfo.DataSource = bdsInfo;
            }
    
            private void bdnInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
            {
                if (e.ClickedItem.Text == "关闭")
                {
                    this.Close();
                }
                if (e.ClickedItem.Text == "上一页")
                {
                    pageCurrent--;
                    if (pageCurrent <= 0)
                    {
                        MessageBox.Show("已经是第一页,请点击“下一页”查看!");
                        pageCurrent++;
                        return;
                    }
                    else
                    {
                        nCurrent = pageSize * (pageCurrent - 1);
                    }
    
                    LoadData();
                }
                if (e.ClickedItem.Text == "下一页")
                {
                    pageCurrent++;
                    if (pageCurrent > pageCount)
                    {
                        MessageBox.Show("已经是最后一页,请点击“上一页”查看!");
                        pageCurrent--;
                        return;
                    }
                    else
                    {
                        nCurrent = pageSize * (pageCurrent - 1);
                    }
                    LoadData();
                }
                if (e.ClickedItem.Text == "go")
                {
                   int a=0;
                   int.TryParse(txtCurrentPage.Text, out a);
                   if (a == 0)
                   {
                       MessageBox.Show("只能输入正整数!");
                       return;  
                   }
                    //pageCurrent = int.Parse(txtCurrentPage.Text);
                    pageCurrent = a;
                    if (pageCurrent <= 0)
                    {
                        MessageBox.Show("已经是第一页,请点击“下一页”查看!");
                        return;
                    }
                    if (pageCurrent > pageCount)
                    {
                        MessageBox.Show("已经是最后一页,请点击“上一页”查看!");
                        return;
                    }
                    nCurrent = pageSize * (pageCurrent - 1);
                    LoadData();
                }
            }
        }
    }
    复制代码
  • 相关阅读:
    [NOIP2010] 引水入城
    BZOJ 3038 线段树
    [Tyvj 1728]普通平衡树 5种姿势 (彩蛋)
    BZOJ 1588: [HNOI2002]营业额统计
    BZOJ 2141 排队 线段树套替罪羊
    BZOJ 3629 [JLOI2014] 聪明的燕姿 dfs
    P1546 [USACO3.1]最短网络 Agri-Net(洛谷)
    并查集详解+模板
    sync_with_stdio和cin.tie(0); cout.tie(0);
    拓扑排序详解
  • 原文地址:https://www.cnblogs.com/zhaooyw/p/8443676.html
Copyright © 2020-2023  润新知