应公司要求,前段时间写了个关于CRUD的界面DEMO,要求操作时无页面刷新,可以连续添加,快速录入。

     现记录一下整个设计思路和一些想法。Demo下载地址:https://files.cnblogs.com/zranran/WebApplication1.rar

     开发环境VSTS2008 .netframework3.5

     技术:c#,.net Ajax

     首先说一下.net Ajax技术,相信熟悉.net Ajax的开发人员都知道,在.net中可以用updatepanel来实现无页面刷新提交,但是会产生一些数据冗余,传输效率低,但是实现简单。另外,Ajax服务器端和客户端开发方式比较,客户端功能强大,性能高,但是开发难度大。我这里用的是完全的客户端开发方式,客户端直接与后台webservice交互。

     根据客户原有操作习惯,Aspx页面我分为三个区域,第一个区域为操作按钮放置区id为divBigBtn,第二个区域为数据列表区id为divGrid,第三个区域为录入区id为tableEdit,录入区的textbox控件id要求为txt+实体属性,对应的错误描述label为text+实体属性+ErrorLabel,这些规定为了自动完成列表到录入区的显示,实体收集录入信息,显示属性的录入错误信息等操作而规定(录入区中的录入项提供添加,修改,查询三个功能)。添加操作时,用户点击添加按钮,录入区置成可录入模式,用户录入完成后,点确认按钮,保存数据,成功后,可以连续添加。查询,修改操作类同。删除操作,直接选择列表前的数字连接,然后点删除按钮执行操作。如下图:

ajax页面

     我把整个页面状态设计为5种,分别是无状态,浏览状态,添加状态,修改状态,删除状态,查询状态。页面初始进入状态为浏览状态,比如当点击修改按钮后,页面变为修改状态,保存成功后,页面恢复到浏览状态,其它同理。状态由Ron.Web.Ajax.Operations来控制,是一个js的枚举。

     应用到的ajax控件,这个demo用到了几个ajax控件,分别是button(按钮控件),text(录入text),grid(列表展示),pager(分页)。由于时间关系,这几个控件用的是Behavior模型,没有在用Extender模型去包装它。(其中grid控件是我很久以前改的一个印度哥们儿写的开源的控件,原版的找不到了,呵呵)各个控件的js文件或者我的webform1.js文件中,大家能看到属性设置的说明,挺清楚的。

    grid控件和pager控件结合使用,可以实现分页,排序,选取某一行,删除某一行,列拖拽,某列内容加连接实现简单钻取功能。

    text控件:设置长度,自动跳转,tab/shift-tab跳转,大小写,是否可以为空,正则表达式检查,是否已经通过检查的状态,是否是webservice后台检查,validating的js方法设置等。

     PageCommon.js文件包括了整个页面流程需要的各个公用方法。

     WebForm1.js文件为页面的整个客户端操作。

     webservice1为后台增删改查校验操作。由于此demo只是为了尝试用ajax技术,所以后台没有连接数据库,后台操作均为伪数据操作。

     demo使用说明,如添加操作,点添加按钮,录入区变为可录入模式,用户ID录入1或者2后台会检查重复,录入空或者非数字会检查格式不正确,长度为3,超过长度会自动跳转,用户名录入会自动转为大写,电话可不录入,焦点在电话录入框时,按tab键会跳转到ID录入区,整个录入区循环跳转,按确定按钮,实现保存功能。

     这个demo只是为大家提供一个思路,可能有不少bug,呵呵,如果大家对ajax的crud有不同的思路,请大家提出来,一起交流一下。    如果大家对ajax的控件开发,服务调用有更好的思路也请指教,谢谢。

    不过用这种纯ajax客户端开发,个人觉得开发难度不小,即不好调试,开发工具也不强大,好多带出功能都没有。

posted on 2010-03-05 16:40  RonZhang  阅读(476)  评论(0编辑  收藏  举报