class Query { void Add(string fieldName, string value, QueryOperator oper); string GetSql(); }
QueryPeopleForm : QueryFormBase OnQueryButtonClick() { Query query = new Query(); query.Add(“Name”, txtPeopleName.Text, QueryOperator.Like); query.Add(“Age”, txtPeopleAge.Text, QueryOperator.Equal); QueryAndBind(new PeopleManager(), query.GetSql()); }
把拼Sql的工作放在Query类中做,调用者只要声明查询字段,对应的值,和比较类型即可。
到这一步,我们的基类页已经很好用了,但还有一个小问题,也就是前面说的,在WebForm中无法实现界面级的继承,那么基类页的QueryAndBind方法,将无法知道查询结果要绑定到哪一个表格,这时我们的做法是在基类页中声明DefaultGrid属性,让继承页来告知当前的表格控件。
修改后的代码:
QueryPeopleForm : QueryFormBase OnQueryButtonClick() { InitControls(gridMain); Query query = new Query(); query.Add(“Name”, txtPeopleName.Text, QueryOperator.Like); query.Add(“Age”, txtPeopleAge.Text, QueryOperator.Equal); QueryAndBind(new PeopleManager(), query.GetSql()); }
(编辑:aniston)
|