知识大全 ASP.NET中基类页的设计和使用[2]

Posted

篇首语:学在苦中求,艺在勤中练。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET中基类页的设计和使用[2]相关的知识,希望对你有一定的参考价值。

ASP.NET中基类页的设计和使用[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  这儿的代码少了 但仍有问题 当查询条件变化后 每次拼查询语句的工作即枯燥又容易出错 那么我们加入一个Query类 以简化这儿的操作:

  public enum QueryOperator     //等于比较    Equal =    // 不等于   NotEqual =    // Like比较   Like =   

  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());   

  总的代码可以从附件中下载 大家可以加入断点 看看基类 继承类页的代码执行顺序

  应该说基类的设计相对复杂 但好处是继承页的代码变得清楚了 没有多余重复的代码

  而基类页的设计其实是有技巧的 总结起来有以下几条

   首先以最直接的方式写出页面代码   提取公用方法和添加辅助类   提取事件处理流程到基类页中   在基类页中设计需要继承页重载的方法与事件

  从设计上来讲 用基类页的方式来统一操作 简化页面代码是一种非常直观的方式 缺点是随着项目的演化 基类页会变得大而全 不容易被新的项目重用 这时我们就可以考虑把其中的一部分功能放到用户控件和自定义组件中来实现 以减少耦合性和提高重用性

cha138/Article/program/net/201311/15133

相关参考

知识大全 ASP.NET中基类页的设计和使用[1]

ASP.NET中基类页的设计和使用[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在Asp

知识大全 ASP.NET中基类Page

ASP.NET中基类Page  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  加载对应Load事件

知识大全 ASP.NET返回上一页的方法小集

ASP.NET返回上一页的方法小集  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  返回上一页的这

知识大全 利用JS在asp.net中实现左导航页的隐藏

利用JS在asp.net中实现左导航页的隐藏  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 ASP.NET项目开发指南:界面控件设计(2)[2]

ASP.NET项目开发指南:界面控件设计(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 ASP.NET项目开发指南:界面设计(2)[2]

ASP.NET项目开发指南:界面设计(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP.NET入门教程 13.2.2 目录的设计

ASP.NET入门教程13.2.2目录的设计  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 ASP.NET入门教程 2.1 总体设计目标

ASP.NET入门教程2.1总体设计目标  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 ASP.NET项目开发指南:界面设计(2)[1]

ASP.NET项目开发指南:界面设计(2)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP.NET项目开发指南:界面控件设计(2)[1]

ASP.NET项目开发指南:界面控件设计(2)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!