Teddy's Knowledge Base

发布AjaxHelper0.3和AjaxHelperExample2

如果你不知道AjaxHelper是什么,请参见:.Net环境下基于Ajax的MVC方案AjaxHelper使用范例

AjaxHelper0.3版主要修改:

1、为便于js代码调试,主要功能函数不再封装在AjaxHelper类,改回直接访问;

2、增加Appender函数用以执行插入类的回调操作,支持四种插入方式,详见范例;

3、扩展了系统String类,为其增加类似c#的trim,ltrim,rtrim,endwith等函数,详见AjaxHelper.js;

5、为Ajax.aspx页面增加validateRequest=false以支持包含html标签的回调

4、提供几个的新的范例

下载地址:

AjaxHelper0.3

AjaxHelperExample2

AjaxHelperExample2范例清单:

1、无刷新提交指定的Form表单
2、无刷新追加数据(插入位置可以是beforeBegin, afterBegin, beforeEnd, afterEnd)
3、无刷新DropDownList OnSelectedIndexChanged事件和利用Xml预览控件解析RSS

关于Form的说明:

在使用Ajax情形下,如果你要提交某一个Form的话,该Form最好为非runat=server的,因为一个aspx页面只允许一个runat=server的Form,同时,Form不能嵌套,还有就是如果你的aspx页面本身就包含asp.net的WebControls的话,则这些WebControls必须包含于runat=server的Form。

Enjoy!

//文章结束

posted on 2005-06-17 14:19 Teddy's Knowledge Base 阅读(3236) 评论(15)  编辑 收藏 所属分类: Ajax

评论

#1楼  2005-06-17 17:55 neuhawk [未注册用户]

强烈支持,如果可行的话。我的UI Mapper引擎可以用Ajax实现,
呵呵,只添加一个引擎,所有界面就可以无刷新了。这就是UI Mapper比
代码生成器的好处。还有个好处就是,可以动态调整界面,不需要重编译,不需要重起,调整后,只刷新一下就可以了。
我很想用Ajax实现一个。如:http://222.66.27.203:8080/extrasample
  回复  引用    

#2楼  2005-06-17 21:24 铱星      

我想知道,用这用方式去调用了后面的用户控件,那么调用的时候能不能传一个参数之类的,这样的话,调用的数据将更具变化   回复  引用  查看    

#3楼 [楼主] 2005-06-17 23:00 Teddy's Knowledge Base      

当然可以传参数,还可以对返回数据任意的自定义处理,参见范例!   回复  引用  查看    

#4楼  2005-06-18 01:35 birdshome      

@neuhawk
非常酷的主件!   回复  引用  查看    

#5楼  2005-06-18 10:44 铱星      

谢谢,的确可以传参数,呵呵忘了去看那个js文件了

我试了一下,其实页面上放的那个控件不是必需的,而容器(div)是必需的吧

还有就是,无刷新最终都会碰到的问题,在客户端刷新后,服务器端怎么才能比较容易的得到最后选中的值?   回复  引用  查看    

#6楼 [楼主] 2005-06-18 11:14 Teddy's Knowledge Base      

其实div也不是必需的,如果你只是想像服务端提交一点数据,不需要返回什么值得话,可以以Updater('ctl', null, 'params')的方式调用,这样,提交完毕后不会返回什么东西,也就可以用来实现你需要的通知服务端的效果,如果你只需向服务端提交数据,提交完成后想做一些自定义操作的话,调用Updater时加第四个参数,设置一个js回调函数就行。   回复  引用  查看    

#7楼 [楼主] 2005-06-18 11:20 Teddy's Knowledge Base      

to neuhawk:

你的那个sample效果很不错,可以用来做个在线知识库~~

我对UIMapper也比较关注,一直没想到好的解决方案,不知如何下手比较好,不知你的方案的主要思想是什么?   回复  引用  查看    

#8楼  2005-06-18 12:04 neuhawk [未注册用户]

UIMapper其实也不难,根据xml定义,动态生成界面。
我用.net webcontrol做了一套,用它开发了4个模块(mis),效果不错。http://222.66.27.203:8080/extrasample不刷新,但是有些功能不够强大,我做的功能强大一点,但常要刷新。用div+table,UIMaper生成的界面,可根用户表单相差无几。UIMaper我改了好多次,性能提高了很多。如果你用代码生成器,每个页面去改,我们的系统400多张表(18个模块),会死人的。
  回复  引用    

#9楼  2005-06-18 14:08 铱星      

在客户端是看不到最后加载的用户控件嘛
如果获取新的数据后,如你范例1中dropdownlist,服务器端如何获得你再次选中的值呢?   回复  引用  查看    

#10楼 [楼主] 2005-06-18 14:37 Teddy's Knowledge Base      

to 铱星:

服务器端返回的内容中可以在包含Updater之类的脚本函数调用,比如如果我从服务器端返回一个dropdownlist,返回的这个dropdownlist同样可以有调用Updater的onchange事件处理,那我就同样可以根据需要通知服务端呀~

另一方面,服务器端会返回什么数据,在设计时一般是可以预知的,那么也完全可以预知将要通知反馈什么信息给服务端。   回复  引用  查看    

#11楼 [楼主] 2005-06-18 14:47 Teddy's Knowledge Base      

to neuhawk:

你所说的基于一个xml来动态构造显示内容的方式我也在一个项目中使用过,但是最后显示不够美观的问题一直得不到非常优雅的解决,比如,有些元素我希望一行显示多个,有些元素我又想显示得大一些活着需要比较特殊的颜色等。因此,最后只能这样解决,将页面上需要显示的元素清单写在xml里,然后,为每个xml配置文件配一个xsl,两者搭配,这样可以获得一定的自定义显示,但是我个人总觉得不够优雅。

如果,把关于如何显示元素的的信息和元素清单都写在xml里的话又恐怕造成这个xml配置文件的结构schema难以维护,显然更不可接受。   回复  引用  查看    

#12楼  2005-06-18 15:22 neuhawk [未注册用户]

to:Teddy's Knowledge Base 我的想法是,UIMaper不只是一个,应该有2-3个,以分别适应不同的要求,不过要是UIMaper满足不了,另外写代码了,毕竟这部分不多。有良好的工具主持,xml复杂点也没有关系,毕竟很少直接改动。UIMaper+业务模版,一张表单的crud操作几分钟就完成了。以前研究OA的时候,发现澳吗OA可以用户自定义表单和验证等等,于是有做类似的想法。   回复  引用    

#13楼  2005-06-18 15:41 neuhawk [未注册用户]

在mis如进销存中,输入表单,有些字段是从别的表带过来的,比如
采购单明细的零件等。如果用UIMapper,只需要配置一下需要从那个表单,那个字段对应就可以了,不用写js代码来回传数据。想金蝶那样,左边是分类树,右边是数据,打开的窗口可以曾删改查。用UIMapper,还有个好处就是,可以自动生成查询界面,我们查询有两种,一种是用户设定好的,比如 部件,五金件,另外一种就是用户输入条件的,如编号从1000-1200等。而且,用UIMapper,可以根据字段名获取字段描述,这对数据运算出问题的时候,可以告诉用户那里出了问题,而不用在代码里写死那个字段中文信息。当然,UIMapper不是万金油,不是任何界面都合适,所以有些还得写的,如权限分配。我们的团队,只有
2个人熟悉.net,如果不用UIMapper,项目早就失败了。所以,项目+环境+水平确定采用什么技术,采用什么架构。我们业务开发,用界面生成工具+继承模版,简单的业务表单可以几分钟搞定。业务开发的几乎不需要懂.net。想工作流那样的定制界面功能,基本满足用户需求。

  回复  引用    

#14楼  2005-06-18 15:52 neuhawk [未注册用户]

UIMapper比较合适MIs之类的项目,对于b2b,cms等不太合适,最近开始做进销存,找了几个市场上流行的分析,发现界面不是很复杂,比较统一单调,可以用UIMapper做下去。不过我的UIMapper还不够成熟,毕竟只花了不够一个月的时间而且也是我刚转到.net的时候做的。我UIMapper比较急需的是无刷新的支持和更多的控件(如dropdowmnlistbox下啦框是个treeview)。   回复  引用    

#15楼  2005-06-18 23:28 wuchang      

值得期待   回复  引用  查看