其实extjs自身就有这么一个功能,先在grid中单击或者双击修改,然后保存在缓存里,关闭界面则丢失。
最后自己写按钮提交到数据库。
1、先要给能修改的字段增加规则,比如:
ExtformVTypes['integerVal']=/^\d+$/;ExtformVTypes['integerText']='只能填写正整数或0';//这个是填写非法的提示
ExtformVTypes['integer']=function(v){ return ExtformVTypes['integerVal']test(v); }
var acptQtyEdit=new ExtformTextField({vtype:"numbers",allowBlank:false});
2、定义哪些字段可以修改
var model=createSelectionModel(acptQtyEdit);//参数可以写很多个
3、在grid中定义clicktoEdit属性,比如:
clicktoEdit:1//这里的数字表示单击或者双击,具体情况请查询api,不记得了
4、如何提交到服务器,通过如下方法:
var store=gridgetStore(); var modified=storemodifiedslice(0);//获得所有修改过的数据
var jsonArray = [];//将修改后的数据转换成json结构的存放容器
Exteach(modified,function(m){ jsonArraypush(mdata); });
//这里你需要重新加载一下store,好让grid刷新,这里我省略了
ExtAjaxrequest({
method:"post", url:"modifyOrderListExt", success:function(response,config){ ExtMsgalert("提交成功","提交成功"); },
params:{modifyData:ExtutilJSONencode(jsonArray)}}); }下面为大家介绍在ExtJs中上传文件的几种方法
第一种方法:传统的上传方式
在formpanal中增加一个fileUpload的属性
例子代码:
JScript 代码 复制
ExtonReady(function(){
var form = new ExtformFormPanel({
renderTo:'file',
labelAlign: 'right',
title: '文件上传',
labelWidth: 60,
frame:true,
url: 服务器处理上传功能的url地址,//fileUploadServlet
width: 300,
height:200,
fileUpload: true,
items: [{
xtype: 'textfield',
fieldLabel: '文件名',
name: 'file',
inputType: 'file'//文件类型
}],
buttons: [{
text: '上传',
handler: function() {
formgetForm()submit({
success: function(form, response){
ExtMsgalert('信息', responseresultmsg);
},
failure: function(){
ExtMsgalert('错误', '文件上传失败');
}
});
}
}]
});
});
第二种方法:借助ExtuxUploadDialogDialog的组件,在编码时需要导入两个文件
需要引入 ExtuxUploadDialog 样式文件 和 ExtuxUploadDialogpacked脚本文件。
例子代码
//在使用此方法进行文件上传时,其后台往页面的返回值类型是这样的:
//{'success':true,'message':'上传成功'}
//如果没有success:true,无论上传成功与否,显示的都是上传失败,其实这个和formsubmit()的提交方式是一个道理。
var dialog = new ExtuxUploadDialogDialog({
autoCreate: true,
closable: true,
collapsible: false,
draggable: true,
minWidth: 400,
minHeight: 200,
width: 400,
height: 350,
permitted_extensions:['JPG','jpg','jpeg','JPEG','GIF','gif','xls','XLS'],
proxyDrag: true,
resizable: true,
constraintoviewport: true,
title: '文件上传',
url:用于处理上传文件功能的Url,
reset_on_hide: false,
allow_close_on_upload: true ,
upload_autostart: false
});
//定义上传文件的按钮
var btnShow = new ExtButton({
text:'上传文件',
listeners:{
click:function(btnThis,eventobj){
dialogshow();
}
}
});真的是难分优劣
不知道你问这个问题的初衷,如果你是可以选择产品使用什么框架的高层,那Dojo是免费的,这个优势是巨大的,除非你不考虑法律问题。
如果你是开发人员,现在想学一门来吃饭的话,这两个会了哪个都OK的,因为你不知道下一家公司用啥,对不对?另外说一句,如果你是在选学哪个,那先学一下jQuery吧,一方面实际项目很有可能就用,比如dojo+jQuery,extjs+jQuery,这种组合很常见,而且jQuery的学习可以很好的让你了解JS框架的核心理念。
就我个人而言,更偏爱dojo,不是说dojo就比extjs好,是因为我的工作环境要求我要用dojo,所以就用,用了后觉得挺好,总比没有得用好多了,dojo唯一的缺点是几乎所有有用的资料都是英文的国外用Dojo更多一些,国内有人说是ExtJs,这个有待考证。
dojo的最大优势是真正的开源,并且有几个大公司做支持,所以尽管是免费的,但是代码的质量的确不错,而且更新速度比较快,今年一年更新了2个大版本,从15到16再到17,一个框架现在多强都是白搭的,因为多强的框架都有问题,如果更新的效率不行,终究是个失败品,而dojo目前看到不会烂尾。
在基于extjs的MVC开发的时候用到命名空间,也成为应用的名称,是一个全局变量,在extjs加载时识别本项目用到的文件并找到相应的类;extjs MVC结构如下所示:
extjs MVC项目的命名规则是:命名空间名+包名+js文件名
假设一个项目的命名空间为name:'crm'在view下有一个自定义类addForm,那么根据如上规则该类就定义为Extdefine('crmviewaddForm',{});那么extjs在加载时就会在crm这个命名空间找到view,再找到view下的addForm这个类;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)