實際使用時,按照功能頁面劃分,可以定義多個基類頁,如:
class FormBase
class BizFormBase :FormBase
class ViewFormBase : BizFormBase
class EditFormBase : BizFormBase
class QueryFormBase : FormBase
BizFormBase:加入和業務相關的屬性,如:該頁面的當前業務對象ID等。
ViewFormBase,:EditFormBase:實現具體的查看,編輯功能。
QueryFormBase:實現對通用查詢頁面的封裝。
為了幫助大家理解,我們以查詢基類頁的設計過程來分析:
一個最簡單的查詢頁面會包括三部分,多個查詢條件文本框,查詢按鈕,以及表格。同時查詢頁會和一個數據訪問組件關聯,當點查詢時,會把查詢條件轉成where語句提交給數據訪問組件。
QueryPeopleForm
OnQueryButtonClick()
{
string peopleName = txtPeopleName.Text;
string peopleAge = txtPeopleAge.Text;
string sql;
sql = string.Format(“Name Like‘%{0}%’and Age = {1}, PeopleName, peopleAge);
PeopleManager manager = new PeopleManager();
this.gridMain.DataSource = manager.GetDataTable(sql);
this.gridMain.DataBind();
}
當點擊查詢按鈕時,我們做了以下三件事:
1、獲取查詢條件
2、提交查詢
3、將查詢結果綁定到表格
這兒的提交查詢和綁定在不同的查詢頁面都是一樣的,于是我們首先把2,3放到基類頁中,并提供這樣一個方法:void QueryAndBind(IManager manager, string sql); 這兒要定義IManager接口,讓所有的Manager都實現該接口,這樣基類頁就無需知道具體的Manager,只要調用IManager.GetDataTable方法,然后綁定表格到即可。
使用基類頁后的代碼:
QueryPeopleForm : QueryFormBase
OnQueryButtonClick()
{
string peopleName = txtPeopleName.Text;
string peopleAge = txtPeopleAge.Text;
sql = string.Format(“Name Like‘%{0}%’and Age = {1}, PeopleName, peopleAge);
QueryAndBind(new PeopleManager(), sql);
}
原文轉自:http://www.anti-gravitydesign.com