winform自定义控件——DataGridView

本例在winform中封装了一个UserControl,主要使用了DataGridView,具备基本的分页跳转和显示功能:

新建一个UserControl,做下布局(本例取名:DataPager):

DataGridView用来显示数据,两个button用来上下翻页,两个lable分别显示数据总数、当前页码数

代码如下:

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;

namespace Conf.UC
{
    public partial class DataPager : UserControl
    {
        public DataPager()
        {
            InitializeComponent();
        }

        DataTable dataTable;

        /// <summary>
        /// 显示数据
        /// </summary>
        /// <param name="dt"></param>
        public void ShowData(DataTable dt)
        {
            if (dt.Rows.Count > 0)
            {
                // 倒序
                DataView dv = dt.DefaultView;
                dv.Sort = "id desc";
                DataTable dt2 = dv.ToTable();

                this.dataTable = dt2;
                this.page = 1;
            }
        }

        /// <summary>
        /// 总数
        /// </summary>
        int count
        {
            get
            {
                int value = dataTable.Rows.Count;
                this.lb_count.Text = value.ToString();
                return value;
            }
        }

        /// <summary>
        /// 总页数
        /// </summary>
        int total_page
        {
            get
            {
                return (int)Math.Ceiling((double)count / (double)limit);
            }
        }

        int _page = 1;
        /// <summary>
        /// 当前页码
        /// </summary>
        int page
        {
            set
            {
                _page = value;
                // 范围
                if (_page < 1)
                {
                    _page = 1;
                }
                if (_page > total_page)
                {
                    _page = total_page;
                }
                // 显示数据
                DataTable dt = new DataTable();
                dt = dataTable.Clone();
                int start = (_page - 1) * limit;
                int end = start + limit;
                end = end > count ? count : end;
                for (int i = start; i < end; i++)
                {
                    dt.Rows.Add(dataTable.Rows[i].ItemArray);
                }
                this.data.DataSource = dt;
                // 显示页码
                this.lb_page.Text = string.Format("{0}/{1}", _page, total_page);
                this.btnPre.Enabled = (_page == 1) ? false : true;
                this.btnNext.Enabled = (_page == total_page) ? false : true;
            }
            get { return _page; }
        }

        /// <summary>
        /// 每页显示数
        /// </summary>
        int limit = 50;

        // 上一页
        private void btnPre_Click(object sender, EventArgs e)
        {
            page--;
        }

        // 下一页
        private void btnNext_Click(object sender, EventArgs e)
        {
            page++;
        }
    }
}
若在vs工具箱列表中,没有出现刚刚自定义的UserControl,需要点击vs->项目->刷新项目工具箱项,即可刷新工具箱列表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值