C#连接数据库——分页

以实现下面该效果为实例:

private string constr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
        int pageSize = 2;//每页显示条数
        int currentPage = 1;//当前页码
        int totalCount = 0;//总记录数
        int totalPage = 1;//总页码
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            BindPageSize();

            tbPage.Text =currentPage.ToString();

            BindDataGridView();
        }

        //存放显示每页条数信息
        private void BindPageSize()
        {
            List<PageSize> list = new List<PageSize>() 
            { 
                new PageSize(){Code=2,Text="2" },
                new PageSize(){Code=3,Text="3" },
                new PageSize(){Code=4,Text="4" },
                new PageSize(){Code=5,Text="5" },
                new PageSize(){Code=10,Text="10" },
                new PageSize(){Code=20,Text="20" }
            };

            cbPageSize.DataSource = list;
            
            //显示选中的文本信息
            cbPageSize.DisplayMember = "Text";
        }

        //处理分页查询
        private void BindDataGridView()
        {
            //查询的起始点
            int start = (currentPage - 1) * pageSize;

            string where = "where (1=1)";
            if (!string.IsNullOrWhiteSpace(tbUserName.Text))
            {
                where += "and UserName like @UserName";
            }

            SqlParameter[] parameters = new SqlParameter[]
            {
                new SqlParameter("@UserName",$"%{tbUserName.Text}%")//模糊匹配
            };

            //分页
            string sql = "select * from [User] " + where + " order by UserId offset " + start + " rows fetch next " + pageSize + " rows only; select count(*) from [User] " + where;

            DataSet ds = SqlHelper.ExecuteDataset(constr, CommandType.Text, sql, parameters);

            totalCount = (int)ds.Tables[1].Rows[0][0];
            totalPage = totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1;

            dataGridView1.DataSource = ds.Tables[0];

            // 显示当前页码和总页数
            label2.Text = $"{currentPage}/{totalPage}";

            // 显示当前页码
            tbPage.Text = currentPage.ToString();

            // 按钮的禁用启用
            if (currentPage == 1)
            {
                btnFrist.Enabled = false;
                btnPrev.Enabled = false;
                btnNext.Enabled = true;
                btnLast.Enabled = true;
            }
            if (currentPage == totalPage)
            {
                btnFrist.Enabled = true;
                btnPrev.Enabled = true;
                btnNext.Enabled = false;
                btnLast.Enabled = false;
            }
            if (currentPage > 1 && currentPage < totalPage)
            {
                btnFrist.Enabled = true;
                btnPrev.Enabled = true;
                btnNext.Enabled = true;
                btnLast.Enabled = true;
            }   
        }
        //查询
        private void btnSelect_Click(object sender, EventArgs e)
        {
            currentPage = 1;
            BindDataGridView();
        }
        //首页
        private void btnFrist_Click(object sender, EventArgs e)
        {
            currentPage = 1;
            BindDataGridView();
        }
        //尾页
        private void btnLast_Click(object sender, EventArgs e)
        {
            currentPage = totalPage;
            BindDataGridView();
        }
        //上一页
        private void btnPrev_Click(object sender, EventArgs e)
        {
            if (currentPage > 1)
            {
                currentPage = currentPage - 1;
            }
            else
            {
                currentPage = 1;
            }
            BindDataGridView();
        }
        //下一页
        private void btnNext_Click(object sender, EventArgs e)
        {

            if (currentPage < totalPage)
                currentPage = currentPage + 1;
            else 
                currentPage = totalPage;
            BindDataGridView();
        }
        //每页显示条数的改变
        private void cbPageSize_SelectedIndexChanged(object sender, EventArgs e)
        {
            PageSize ps = (PageSize)cbPageSize.SelectedItem;
            pageSize = ps.Code;
            currentPage = 1;
            BindDataGridView();
        }
        //页码输入
        private void tbPage_KeyPress(object sender, KeyPressEventArgs e)
        {
            // 输入框只能输入数字,退格键,回车键,删除键
            if (e.KeyChar >=48 && e.KeyChar<=57 || e.KeyChar==8 || e.KeyChar==13 ||e.KeyChar==127)
            {
                e.Handled = false;
                if (e.KeyChar==13)
                {
                    if (!string.IsNullOrWhiteSpace(tbPage.Text)) 
                        btnBreak.PerformClick();
                    else
                    {
                        tbPage.Text = "1";
                        btnBreak.PerformClick();
                    }
                }
            }
            else
                e.Handled = true;
        }
        //跳转
        private void btnBreak_Click(object sender, EventArgs e)
        {
            currentPage=Convert.ToInt32(tbPage.Text);
            BindDataGridView();
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值