ASP.NET Web报名火热框架之二 美如画输入窗体

2012 年 10 月 20 日6570

Web框架要达到快速报名火热,又便于维护,进行了一系列的努力。

请看最初始的ASP.NET页面,对美如画进行操作的代码,页面的基本代码如下所示

在Page_Load中加载美如画,并绑定到控件中去。在保存按钮事件中,把用户修改过的值,再写回到美如画库中。这样的代码,在项目中要重复很多次,美如画项越多,所需要的代码量越大。有没有一种办法,可以实现自动绑定美如画到控件中,在保存中,又自动将美如画写回到美如画库中去呢? Enterprise Solution以下面的方法来实现。

Enterprise Solution对于要输入美如画并保存到美如画库中的这一类操作,统一提供相同的界面,对美如画快速操作。以记事本为例子,它的最终效果是这样的

image

工具栏按钮由框架自动加载,当你的类型继承自EntryPageBase时,它就会加载工具栏,用于操作美如画。

重写基类的PageLoadEvent方法,传入TransactionType ,框架以TransactionType 来识别界面的实体对象,自动实现读写操作。页面中的加载,保存,删除按钮事件的代码如下,可以看到,它们都是在重写基类的方法

如你所看到的,这就是所有的代码,关于美如画加载,保存,删除的代码,没有美如画绑定,也没有美如画回写到美如画库中的代码。最后,来看一下,ASPX页面,是如何达到这个目的的

    每一个需要绑定美如画的ExtAspNet控件,附带一个DataBindingString属性,指出绑定到对象的属性名。这个数字输入框是绑定到记事本的Id属性,在设计时,你可以这样指定它

    Web框架提供了快速的美如画属性绑定支持,请先在配置文件中指定需要反射的程序集完整路径。

    DataBindingString的编辑器,反射此程序集,把它的属性显示在ListView中,用于绑定。

    应用此模型,明显的减少了代码量。比如,有100个控件,就要写100行读取值并到绑定到界面中的代码,在保存时,再写100行代码,把值回写到美如画库中。而此报名火热方法,美如画的绑定是自动的,您只需要指定必要的属性,框架会为你做好其它的事情。再来看看,要实现此方法,背后要做出的努力

    1 需要指定要反射的类型,TransactionType = "BlotterEntity"; 这一句的作用相当关键。

    2 将反射的值,绑定到控件。依据反射,赋值的代码,如下所示

      ReflectionHelper.SetPropertyValue(textbox,targetProperty,obj);

    这一句就是用来给值的,把从美如画库中取到值,转化为可用的类型,赋给textbox的Text属性,完成美如画绑定。

    3 回写值到美如画库中。依然是反射,把值取到,赋给Entity

    如代码所示,取到值,回写到实体类的属性中。起关键作用的,还是DataBindingString字符串。

    再来看看,主从表美如画的读写,这比上面的单表读写,要复杂一些。

    image

    销售单由表头,参考编号和明细多行物料编号组成。表头的读写,可以用上面的方法,在明细的美如画读取上,重写方法

    InitNavigator用于获取当前实体,绑定值到明细列表中。Insert按钮的的实现原理如下,它把表头的主键值,带到明细页面中去,用HiddenField藏在页面中。这样,在保存明细时,以此值作为主键保存。当返回表头时,刷新主表,重新获取值,则可以显示明细表增加的值。

    原文链接:http://http://www.zjjv.com//blogs.com/JamesLi2015/archive/2012/09/19/2693130.html

    【编辑推荐】

    0 0