很久没有更新关于XCodeFactory的文章了,因为最近一段时间忙着学习Spring.NET和NHibernate,对比一下NHibernate与XCodeFactory,发现XCodeFactory在中小型的应用中还是很有用武之地的,当然,如果你开发大型的应用,我强烈支持你使用NHibernate来解决数据层问题。在学习告一段落后,接下来这几天终于可以抽出些时间来讲讲XCodeFactory高级特性了,就先从分页讲起吧。
大家一定还记得,在IDBAccesser接口中有一个方法GetPaginationMgr,其签名如下:
参数page_size表示每页包含的记录个数,whereStr是搜索条件的where字句,columns表示要从数据库中取出哪些列。我们现在还是基于XCodeFactory3.0完全攻略--简单示例 中的项目示例来说明分页功能的使用。
首先,在XcfTestProject项目中添加一个Form用于显示分页的效果,Form的构造如下图所示:
为该Form添加IPaginationManager私有成员,并在Ctor中初始化它,然后显示出第一页。
“上一页”、“下一页”和“转到页面”事件处理:
可见使用IPaginationManager进行分页是多么的简单。其中要注意的是,如果指定index的页面不存在,IPaginationManager.GetPage(int pageIndex)将会返回null。上面的代码没有处理可能的异常,仅仅说明了如何使用IPaginationManager 。最后给出一幅有了分页结果的截图。
关于分页管理器的详细实现,可以参见这里。
XCodeFactory3.0完全攻略 目录
大家一定还记得,在IDBAccesser接口中有一个方法GetPaginationMgr,其签名如下:
IPaginationManager GetPaginationMgr(int page_size ,string whereStr ,string[] columns ) ;
对应的DataEntrance也有一个类似的方法: public static IPaginationManager GetPaginationMgr(Type objType ,int page_size ,string whereStr ,string[] columns)
参数page_size表示每页包含的记录个数,whereStr是搜索条件的where字句,columns表示要从数据库中取出哪些列。我们现在还是基于XCodeFactory3.0完全攻略--简单示例 中的项目示例来说明分页功能的使用。
首先,在XcfTestProject项目中添加一个Form用于显示分页的效果,Form的构造如下图所示:
为该Form添加IPaginationManager私有成员,并在Ctor中初始化它,然后显示出第一页。
private IPaginationManager paginationMgr = null ;
public Form2()
{
InitializeComponent();
//找出所有年龄大于22岁的学生
string whereStr = string.Format("where {0} > '22'" ,Student._Age) ;
string[] columns = {"*"} ; //找出所有列
this.paginationMgr = DataEntrance.GetPaginationMgr(typeof(Student) ,15 ,whereStr ,columns) ;
//显示第一页
this.dataGrid1.DataSource = this.paginationMgr.GetPage(0) ;
}
public Form2()
{
InitializeComponent();
//找出所有年龄大于22岁的学生
string whereStr = string.Format("where {0} > '22'" ,Student._Age) ;
string[] columns = {"*"} ; //找出所有列
this.paginationMgr = DataEntrance.GetPaginationMgr(typeof(Student) ,15 ,whereStr ,columns) ;
//显示第一页
this.dataGrid1.DataSource = this.paginationMgr.GetPage(0) ;
}
“上一页”、“下一页”和“转到页面”事件处理:
private void button_prePage_Click(object sender, System.EventArgs e)
{
this.dataGrid1.DataSource = this.paginationMgr.PrePage() ;
}
private void button_NextPage_Click(object sender, System.EventArgs e)
{
this.dataGrid1.DataSource = this.paginationMgr.NextPage() ;
}
private void linkLabel1_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
int pageIndex = int.Parse(this.textBox_pageIndex.Text.Trim()) ;
this.dataGrid1.DataSource = this.paginationMgr.GetPage(pageIndex) ;
}
{
this.dataGrid1.DataSource = this.paginationMgr.PrePage() ;
}
private void button_NextPage_Click(object sender, System.EventArgs e)
{
this.dataGrid1.DataSource = this.paginationMgr.NextPage() ;
}
private void linkLabel1_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
int pageIndex = int.Parse(this.textBox_pageIndex.Text.Trim()) ;
this.dataGrid1.DataSource = this.paginationMgr.GetPage(pageIndex) ;
}
可见使用IPaginationManager进行分页是多么的简单。其中要注意的是,如果指定index的页面不存在,IPaginationManager.GetPage(int pageIndex)将会返回null。上面的代码没有处理可能的异常,仅仅说明了如何使用IPaginationManager 。最后给出一幅有了分页结果的截图。
关于分页管理器的详细实现,可以参见这里。
XCodeFactory3.0完全攻略 目录