六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 60|回复: 0

ExtJS3.2中Component的disable方法和Ajax.request的params参数

[复制链接]

升级  56%

6

主题

6

主题

6

主题

童生

Rank: 1

积分
28
 楼主| 发表于 2013-1-29 11:42:30 | 显示全部楼层 |阅读模式
最近开发的一个功能模块中,前台使用了ExtJs, 其中添加和修改都通用一个窗口和表单,当用户单击窗口中的【取消】或关闭窗口时,其实窗口并没有真正关闭,而是隐藏了。

      由于之前也没用过ExtJs,所以在做的时候,也是先看下别的同事是怎么做的,再说做法上统一对之后的维护也好很多,但Ricki并没有Ctrl+C/Ctrl+V,而是弄明白后,自己写代码。

      正因为如此,才遇到不少问题,其中就记录在修改时,业务主键可见但不可以编辑,Ricki在打开修改窗口时,获取该表单字段,并调用disable方法,设置它不可用。但这样做的话,修改数据单击提交按钮后,这个字段的值就不会上传给服务器,所以报错,提示:Cp.xxx字段不能为NULL。

      与服务端交互是使用Ext.Ajax.request的,Ricki试图设定params参数的值,如:  
      method:'post',(注意,如果使用params参数,method只能用post,否则params的数据也不上传)
      params:{'cp.xxx':Ext.getCmp('cp.xxx').getValue}来实现该字段的上传
      这个在修改记录时,没有错误,但由于之前说过添加和修改共用一个窗口,那么提交按钮理当也是共用一个handler,当添加数据时,就出现问题了,因为添加窗口,业务主键可编辑,但按提交按钮后,整个表单数据和params中的参数都会上传,而表单中已有cp.xxx,假设在添加窗口中,输入的主键值为Book,那么保存在数据库表中的该字段的值最终为xxx:Book,Book。(重复了)

      最后的解决办法是,判断是更新还是添加,如果是添加,那么params赋值为{}即可。

      有空,欢迎到红番薯逛逛
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表