最近项目需要自己写了一个用来给DataGridView分页用的控件。
考虑到分页效率的原因,没有在控件中对DataSource进行处理,所以这个控件就是一个放置DataGridView的容器,提供一个工具栏。
效果图如下:
[img]http://dl.iteye.com/upload/attachment/202498/1e9c54ac-9d77-3dba-aabc-489402df2a96.bmp[/img]
在设计模式下可以为容器添加绑定的DataGridView,并设置工具栏的位置。
[img]http://dl.iteye.com/upload/attachment/202505/569a8cb8-abd0-3636-aa7c-cdfec6ce9740.bmp[/img]
需要说明的是需要在初始化的时候调用
public void Initialization(int pageRowCapacity, int rowCount)方法,给控件初始化。
实际使用来看效果还不错,呵呵,可以做到对源项目中使用DataGridView的画面提供无缝支持。 :D
一个调用的例子。
附件中有源代码和dll文件下载。
考虑到分页效率的原因,没有在控件中对DataSource进行处理,所以这个控件就是一个放置DataGridView的容器,提供一个工具栏。
效果图如下:
[img]http://dl.iteye.com/upload/attachment/202498/1e9c54ac-9d77-3dba-aabc-489402df2a96.bmp[/img]
在设计模式下可以为容器添加绑定的DataGridView,并设置工具栏的位置。
[img]http://dl.iteye.com/upload/attachment/202505/569a8cb8-abd0-3636-aa7c-cdfec6ce9740.bmp[/img]
需要说明的是需要在初始化的时候调用
public void Initialization(int pageRowCapacity, int rowCount)方法,给控件初始化。
实际使用来看效果还不错,呵呵,可以做到对源项目中使用DataGridView的画面提供无缝支持。 :D
一个调用的例子。
public partial class Form1 : Form
{
private OrderBiz orderBiz;
private const int pageRowCapacity = 15;
public Form1()
{
InitializeComponent();
dataGridView1.AutoGenerateColumns = false;
}
private void Form1_Load(object sender, EventArgs e)
{
orderBiz = new OrderBiz(pageRowCapacity);
pagingDataGridView1.Initialization(pageRowCapacity, orderBiz.GetSumPersons());
BindingDate(0);
}
private void pagingDataGridView1_PageDownClick(object sender, PageChangeEventArgs e)
{
BindingDate(e.NextPageRowNumber);
}
private void BindingDate(int startRowNumber)
{ pagingDataGridView1.BindingData(orderBiz.GetPersonsDataSource(startRowNumber), startRowNumber);
}
}
附件中有源代码和dll文件下载。