winform自定义分页
来源:互联网 发布:蜂窝移动数据开启无效 编辑:程序博客网 时间:2024/05/16 05:56
使用bindingNavigator和bindingSource1自定义分页组件,实现分页
/// <summary> /// 委托 /// </summary> /// <param name="e"></param> /// <returns></returns> public delegate int EventPagingHandler(EventPagingArg e); public partial class pageControl : UserControl { public pageControl() { InitializeComponent(); } public event EventPagingHandler EventPaging; private object _sourceobj;//数据源 public object Sourceobj { get { return _sourceobj; } set { _sourceobj = value; } } //每页记录数 private int _pageSize = 5; public int PageSize { get { return _pageSize; } set { _pageSize = value; GetPageCount(); } } //总记录数 private int _PageTotalNum = 0; public int PageTotalNum { get { return _PageTotalNum; } set { _PageTotalNum = value; GetPageCount(); } } //页数=总数/每页记录数 private int _pageCount = 0; public int PageCount { get { return _pageCount; } set { _pageCount = value; } } //当前页 private int _pageCurrent = 0; public int PageCurrent { get { return _pageCurrent; } set { _pageCurrent = value; } } //页数 private void GetPageCount() { if (this.PageTotalNum > 0) { this.PageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(this.PageTotalNum) / Convert.ToDouble(this.PageSize))); } else { this.PageCount = 0; } } //绑定源 public void Bind() { if (this.Sourceobj != null) { //绑定数据源 this.bindingSource1.DataSource = this.Sourceobj; this.bindingNavigator1.BindingSource = this.bindingSource1; } this.FirstItem.Enabled = true; this.PreviousItem.Enabled = true; this.NextItem.Enabled = true; this.LastItem.Enabled = true; if (this.EventPaging != null) { //通过委托事件方法,触发引用窗体绑定方法获取 this.PageTotalNum = this.EventPaging(new EventPagingArg()); } if (this.PageCurrent > this.PageTotalNum) { this.PageCurrent = this.PageTotalNum; } if (this.PageCount == 1) { this.PageCurrent = 1; } if (PageCurrent == 1) { this.FirstItem.Enabled = false; this.PreviousItem.Enabled = false; } if (PageCurrent == PageCount) { this.NextItem.Enabled = false; this.LastItem.Enabled = false; } if (this.PageTotalNum == 0) { this.FirstItem.Enabled = false; this.PreviousItem.Enabled = false; this.NextItem.Enabled = false; this.LastItem.Enabled = false; } this.TextPositionItem.Text = PageCurrent.ToString(); this.TextPositionItem.Enabled = true; this.labelCountItem.Text = "共 " + PageCount + " 页"; this.labelCountItem.Enabled = false; } //首页 private void FirstItem_Click(object sender, EventArgs e) { PageCurrent = 1; this.Bind(); } //上一页 private void PreviousItem_Click(object sender, EventArgs e) { PageCurrent--; if (PageCurrent <= 0) { PageCurrent = 1; } this.Bind(); } //下一页 private void NextItem_Click(object sender, EventArgs e) { this.PageCurrent++; if (PageCurrent > PageCount) { PageCurrent = PageCount; } this.Bind(); } //尾页 private void LastItem_Click(object sender, EventArgs e) { PageCurrent = PageCount; this.Bind(); } } /// <summary> /// 自定义事件数据基类(当前页数?) /// </summary> public class EventPagingArg : EventArgs { public EventPagingArg() { } }
生成组件后,拖到使用的窗体
public partial class Form2 : Form { DataTable dtpage; public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { this.pageControl1.PageCurrent = 1; pageControl1.PageSize = 10; this.pageControl1.Bind(); } /// <summary> /// 分页控件事件 /// </summary> /// <param name="e"></param> /// <returns></returns> private int pageControl1_EventPaging(EventPagingArg e) { return BindView(); } //VIEW数据源绑定,并返回数据总条数 private int BindView() { dtpage = getdtByNum(pageControl1.PageCurrent, pageControl1.PageSize); this.pageControl1.Sourceobj = dtpage; this.dataGridView1.DataSource = dtpage; return 100; } //每页源 public DataTable getdtByNum(int pageNum, int pageSize) { DataTable dt = new DataTable(); dt.Columns.Add("ID", typeof(string)); dt.Columns.Add("NAME", typeof(string)); for (int i = (pageNum - 1) * pageSize; i < pageSize * pageNum; i++) { DataRow dr = dt.NewRow(); dr["ID"] = i; dr["NAME"] = "第" + i + "行"; dt.Rows.Add(dr); } return dt; } }
附代码实例下载:http://download.csdn.net/detail/sky08050025/9729815
0 0
- 自定义winform分页控件
- 自定义winform分页控件
- Winform DataGridView 自定义分页
- winform自定义分页
- WinForm轻松实现自定义分页
- C# WinForm 技巧一: 自定义分页控件
- winform 分页
- winform 分页
- WinForm自定分页
- WinForm 分页控件
- Winform分页代码
- winform 分页控件
- winform 分页控件
- winform 分页控件
- Winform 开发 - 分页控件
- winform 分页控件
- winform 分页控件
- WinForm分页控件
- oc消息转发机制
- 1-1 java基础
- 用myeclipse修改文件是出现“some characters cannot be mapped using "iso-8859-1"character encoding
- 【网络流24题】软件补丁问题
- idea hibernate jpa 生成实体类
- winform自定义分页
- Sqoop2——导入关系型数据库数据到HDFS上
- Spring AOP
- android studio errors
- win7 TNS-12560: TNS: 协议适配器错误 TNS-00530: 协议适配器错误 Windows Error: 38: Filename too long
- 如何用excel求解器solver求出最优化解
- 关于window.location的各属性
- 布局样式属性
- 人脸检测--libfacedetection