摆摆控件,就可以实现多功能(提交、修改、浏览)的表单了[原]-阿里云开发者社区

开发者社区> 吞吞吐吐的> 正文

摆摆控件,就可以实现多功能(提交、修改、浏览)的表单了[原]

简介:
+关注继续查看

最近封了一个简单的类库,主要目的是帮助实现简化制作表单页面的工作。使得制作一个具有提交、修改、浏览功能的表单页面,只需要摆好控件再写很少量的代码即可。在需求发生变动需要调整UI的时候,也仅是调整控件的摆放而已。而且还可以根据工作的流程制作多套表单,在实际使用的时候,根据流程不同来动态切换。这里发个简单的Demo,实际要比这复杂一些,但是Demo已足够阐述实现原理,目的也就达到了。

下面做简单的介绍,具体看代码。(代码是ASP.Net2.0/VS2005的,在C/S里的实现,原理也是一样的。)

约定:
1.表单上的控件ID名称需要同对应的实体的数据字段名相同。(以此为依据映射数据)

一、使用步骤:
1、引用Justin.UILibrary.dll;
2、添加一个用户自定义控件DemoUI.ascx;
3、摆放表单控件,简单演示如下图:

红色部分为自定义校验控件,这里只是个演示,实际中怎么弄随便了。
4、修改用户控件的代码如下:

5、到此,一个只管收集数据,显示数据,修改数据的UI用户自定义界面就做好了。下面需要在页面上使用这个用户自定义控件。Go on …
6、在页面需要显示这个表单的地方放一个PlaceHolder控件,这么做是为了可以动态加载用户自定义控件,从另一个角度来说,这也实现了动态替换不同的用户自定义控件功能,比如你有多个表单需要在不同的情况下动态切换,那么,使用PlaceHolder控件,再配合XML配置文件,一切就OK了。
7、然后在页面的*.aspx.cs里添加如下代码:

8、Ctrl+F5执行程序,一切就OK了!

二、效果演示:
a、提交的时候(除了下拉框,其它都为空):

b、浏览的时候(所有控件不可用)

c、修改状态(界面上有数据,为待编辑状态)

三、Deom总结
最后画了一个简单的顺序图,说明一下程序内部是如何执行的。其中,关于XML的部分在Demo里没有做,只是用注释标明了一下,这个很简单,但是功能却很强大,可以让你在运行时动态决定界面加载哪个预定义的表单用户自定义控件,所以有必要在图中画了一下。


四、关于Justin.UILibrary.dll
最后我们再简单说一下Justin.UILibrary.dll,有了它,使得制作表单的大部分工作变成了摆控件,它把报单里可以抽出来的东西尽量都封装了起来,使得大部分代码工作都得到了重用。这里简单说一下最核心的UI.cs类,它是表单控件的基类,如上面的步骤4所示,继承它之后,只需要附加很少的代码,即可以完成表单的后台代码工作。当然,这里提供的都是最基本的功能,如果用户自己有任何其他字定义功能,都可以自己在继承的基础上再进行扩展。

其中比较关键的几个地方是:
1.ExecActionEvent()方法
这个方法使用委托的机制,将最终按钮的功能如何实现抛出来由用户自己去实现,WHY?因为鬼才知道用户会做什么,这是封装控制不了的因数,所以要抛出去。
2.InitControl(UIType type)方法
这里相当于模板方法模式的应用,内部在不同状态下调用的三个virtual方法,给了SubCalss一个插入功能的机会,即,可以分别在提交、浏览、修改的状态下初始化界面时,加入自定义的功能。如步骤4中所做的,在提交的时候,将按钮的标题改为“提交”,在修改的时候,将按钮的标题改成“保存”,当然,用户自己还可以做很多别的什么事情,这个灵活性是封装的基类不去关心的,基类只提供“工作机会”,至于工作的怎么样,自己看着办吧。
如下图所示:

五、代码下载
JustinDemo: http://files.cnblogs.com/justinw/JustinDemo.rar
Justin.UILibrary: http://files.cnblogs.com/justinw/Justin.UILibrary.rar

虽然这里还只是演示代码,部分地方还有待完善,但是这篇文章主要想说的是如何通过封装来重用和简化代码工作,重要的是其中的原理和思想,还希望各位朋友看过代码后多提宝贵意见。


本文转自Justin博客园博客,原文链接:http://www.cnblogs.com/justinw/archive/2006/10/04/520924.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 30 章 可靠性和预写式日志_30.3. 异步提交
30.3. 异步提交 异步提交是一个允许事务能更快完成的选项,代价是在数据库崩溃时最近的事务会丢失。在很多应用中这是一个可接受的交换。 如前一节所述,事务提交通常是同步的:服务器等到事务的WAL记录被刷写到持久存储之后才向客户端返回成功指示。
827 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9495 0
Android系统移植与调试之------->如何修改Android设备添加3G上网功能
1、首先先来看一下修改前后的效果对比图 step1、插上3G设备前 step2、插上3G设备后,获取信号中。。。。 step3、插上3G设备后,获取到信号 step4、使用3G信号浏览网页 2、下面讲解一下具体的修改步骤 ste...
876 0
dedecms自定义表单提交成功后提示信息修改和跳转链接修改
  我们在用dedecms自定义表单提交成功后提示信息一般是"Dedecms 提示信息",这个要怎么改成自己想要的文字呢?还有就是提示页停留时间,目前估计就2秒,太快了,要如何设置长点呢?通过下面我们就来一起修改一下   打开/include/common.func.php,大概在266行,改成自己的想要的文字,比如“您已经注册成功”。
914 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13183 0
【新功能】钉钉绑定ecs控制台,快速上云,高效操作资源。
钉钉绑定控制台,大大提高了用户对资源的可操作性和易用性。
2859 0
MyEclipse 2016 CI 版本实时预览功能引发的中文乱码的Bug
今天一个加入我的QQ群:IT十年(170273637)的朋友,请教关于MyEclipse 2016 CI 3 JSP页面中文乱码的问题;开始是JSP页面在编辑器中乱码,解决之后又发现在浏览器中查看是乱码,说是该配置的都已经配置了,还问我是不是MyEclipse新版本的问题,我当时还很自信的说应该不是;由于当时是工作时间不方便,我就说晚上帮他看看。
787 0
4852
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载