ddc
联网
平面设计 画册 VI欣赏 包装 CG-插画 搜索 个人网页 Alexa排名 CSS 建站资源 下载专区 JS特效 品牌服装 服装院校 专题欣赏 SEO 图标欣赏 专题
网站建设 域名注册 网站建设 虚拟主机 广州网站设计 域名注册 广州网站建设 上海网站建设 虚拟主机 广州网页设计 虚拟主机 域名注册 acg王国 ACG玩家 品牌设计 上海网站建设
求创科技
网站建设
中国互联
素材出售
中国设计秀
中资源
当前位置:网络学院首页 >> 编程开发 >> .net >> Asp.net中基类页的设计方法代码

Asp.net中基类页的设计方法代码 (2)

来源:中国设计秀    作者:    点击:98     加入收藏    发表评论
0
顶一下

    string peopleName = txtPeopleName.Text;
    string peopleAge = txtPeopleAge.Text;
    sql = string.Format(“Name Like‘%{0}%’and Age = {1}, PeopleName, peopleAge);
      QueryAndBind(new PeopleManager(), sql);
}
这儿的代码少了,但仍有问题,当查询条件变化后,每次拼查询语句的工作即枯燥又容易出错,那么我们加入一个Query类,以简化这儿的操作:
public enum QueryOperator
{
    //等于比较。
    Equal = 0,
    // 不等于
    NotEqual = 1,
    // Like比较
    Like = 6
}
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());
}

至此,基类页的功能已经完整了,但仍然不够,如果我们以后想改变查询按钮点击的行为,比如查询结果为空时,要弹出对话框提示,这时仍然要到处修改页面代码,这不是我们所希望的,于是我们将QueryButton的OnClick操作也放在基类页了中执行,继承页只要初始化数据访问组件和设置查询条件即可。
QueryPeopleForm : QueryFormBase
void Initialize()
{
    // 指定页面对应的Manager
    Manager = new PeopleManager();
    // 绑定控件
    InitControls(gridMain, btnQuery);
}
void GetQueryInfo(Query query)
{
    //获得查询条件
    query.Add(“Name”, txtPeopleName.Text, QueryOperator.Like);
    query.Add(“Age”, txtPeopleAge.Text, QueryOperator.Equal);
}
QueryFormBase:
private IManager manager = null;
public IManager Manager
{
    get { return manager; }
    set { manager = value; }
}
void InitControls(GridView grid, Button queryButton)
{
    this.defaultGrid = grid;
    this.queryButton = queryButton;
    queryButton.Click += new EventHandler(QueryButton_Click);
}
void QueryButton_Click(object sender, EventArgs e)
{
    Query query = new Query();
    GetQueryInfo(Query);
    QueryAndBind(manager, query.GetSql());
}
  总的代码可以从附件中下载,大家可以加入断点,看看基类,继承类页的代码执行顺序。
 
  应该说基类的设计相对复杂,但好处是继承页的代码变得清楚了,没有多余重复的代码。
 
[1] [2] [3]
2007-09-13 16:34:00    出处:
Google
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明 | 网站公告 | 友情链接 | 留言 | 旧版入口