extjs json控件的附件上传,json解析

js中来解析json数据的文件Json.js - 下载频道
- CSDN.NET
&&&&js中来解析json数据的文件Json.js
js中来解析json数据的文件Json.js
Json.js js中来解析json数据的文件Json.js js中来解析json数据的文件Json.js
若举报审核通过,可奖励20下载分
被举报人:
chengxifeng
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行Extjs Form用法详解(适用于Extjs5)
&&&&&当前位置: & & & &
Extjs Form用法详解(适用于Extjs5)
文章来源:
Extjs Form是一个比较常用的控件,主要用来显示和编辑数据的,今天这篇文章将介绍Extjs Form控件的详细用法,包括创建Form、添加子项、加载和更新数据、验证等。
本文的示例代码适用于Extjs 4.x和Extjs 5.x,在Extjs 4.2.1 和Extjs 5.0.1中亲测可用!
本文由齐飞(
Form和Form Basic
Extjs Form和Form Basic是两个东西,Form提供界面的展示,而Form Basic则提供数据的处理、验证等功能。每一个Form Panel在创建的时候,都会绑定一个Form Basic,我们可以通过方法getForm来获取:
form.getForm()
在API方面,Form的config中没有显示Form Basic的config,但是Form Basic的config在Form的config中完全有效,也就是说,当我们使用Extjs Form的时候,不仅仅要查看Form的API文档,还要浏览相关的Form Basic的文档。
创建Extjs Form控件
var form = Ext.create("Ext.form.Panel", {
width: 500,
height: 300,
margin: 20,
title: "Form",
renderTo: Ext.getBody(),
collapsible: true,
autoScroll: true,
//自动创建滚动条
defaultType: 'textfield',
defaults: {
anchor: '100%',
fieldDefaults: {
labelWidth: 80,
labelAlign: "left",
xtype: "container",
layout: "hbox",
{ xtype: "textfield", name: "name", fieldLabel: "姓名", allowBlank: false },
{ xtype: "numberfield", name: "age", fieldLabel: "年龄", decimalPrecision: 0, vtype: "age" }
xtype: "container",
layout: "hbox",
{ xtype: "textfield", name: "phone", fieldLabel: "电话", allowBlank: false, emptyText: "电话或手机号码" },
{ xtype: "textfield", name: "phone", fieldLabel: "邮箱", allowBlank: false, emptyText: "Email地址", vtype: "email" }
xtype: "textareafield",
name: "remark",
fieldLabel: "备注",
height: 50
buttons: [
{ xtype: "button", text: "保存" }
以上代码将创建一个Form表单,效果如下:
Extjs Form布局
在Extjs Form中,默认的布局方式是layout: 'anchor',具体的Extjs 布局可以参考我的这篇文章。
anchor默认每行只显示一个控件,如果我们要在一行中显示多个,需要将这些控件放在一个container中,并设置container的layout为hbox。
Extjs Form加载数据
Form可以加载Model数据,也可以加载Json数据,这样我们可以方便的将json或者record数据显示在Extjs Form控件中。
加载Record数据
Extjs Form通过方法loadRecord加载record,代码如下:
var userRecord = Ext.create("MyApp.model.User", {
name: "Tom",
phone: "123456"
form.loadRecord(userRecord);
加载Json数据
Extjs Form可以通过调用formbasic的setValues方法来加载json数据,代码如下:
var data = {
name: "Tom",
phone: "123456"
form.getForm().setValues(data);
Extjs Form获取与更新数据
通过上面的方法,我们可以为Form加载record或json数据。当我们完成编辑之后,还需要获取编辑后的数据,或者将编辑后的数据更新到对应的record中,Extjs Form提供了相应的方法来完成这些操作。
如果Extjs Form加载的是record:
form.updateRecord();
如果Extjs Form加载的是json数据:
form.getForm().getValues()
Extjs Form异步加载与提交
Extjs Form除了可以加载页面中已存在的数据外,还可以通过Ajax的方式异步加载与提交数据。这种方法不太常用。
form.getForm().load({
url: "form-data.ashx"
服务器返回的数据格式如下:
success:true,
name: "Tom",
phone: "123456"
form.submit({
url: "form-submit.ashx",
success: function (form, action) {
Ext.Msg.alert('Success', action.result.msg);
submit方法提交的数据为Form中的所有value,可以在服务器端获取到。
本文由齐飞(
Extjs Form验证
在所有开发语言中,客户端验证是必不可少的。Extjs Form也提供了客户端验证机制,我们可以通过vtype来实现客户端验证。接下来我们详细的了解一下Extjs的客户端验证。
必填项,就是不能为空(allowBlank)
xtype: "textfield",
name: "UserName",
fieldLabel: "用户名",
allowBlank: false,
输入长度限制,maxLength/minLength
xtype: "textfield",
name: "UserName",
fieldLabel: "用户名",
allowBlank: false,
maxLength: 10,
minLength: 3,
值大小限制,maxValue/minValue
值大小的限制常用于numberfield、datefield,可以指定一个可用值的范围。
xtype: "numberfield",
name: "Age",
fieldLabel: "年龄",
maxValue: 60,
minValue: 18,
vtype提供了一些公用的验证类型,它们包括:
alpha:希腊数字
alphanum:字母和数字
email:电子邮件地址
这四种是extjs内置的,已经提供给我们可以直接来用的。我们拿email来进行示例。
xtype: "textfield",
name: "Email",
fieldLabel: "Email",
vtype: "email",
自定义vtype
上面介绍了vtype的简单用法,可以看到这种验证是非常好用的,但是小伙伴们不觉得extjs提供的vtype太少吗?
小伙伴们不要嫌弃,接下来我们看一下如何自定义vtype,代码:
//验证ip地址
Ext.apply(Ext.form.field.VTypes, {
IPAddress: function (v) {
return /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(v);
IPAddressText: '只能输入ip地址',
IPAddressMask: /[\d\.]/i
xtype: "textfield",
name: "ip",
fieldLabel: "IP地址",
vtype: "IPAddress"
本文由齐飞(
&&☎&友情链接Extjs 文件上传功能
姚晨怀孕心情好秀幸福 疯狂购物老公当跟班《壬归》卷之三 谋望门 > 通象第三中国空军歼
|||中国空军歼-11编队飞掠珠穆朗玛峰 气势如虹八字看你是个容易想不开的人吗《北青网-红人上网》专访阿娇、余少群3类女性不宜泡温泉 你中标了么?暧昧指南:女人身体6大特点让男人发疯《一代宗师》叶问夫妻
|||《一代宗师》叶问夫妻人像:双胞胎“找不同”花寂视频:名厨教您做鲁菜酥肉[转载][转]?每天读一遍,不久你就会变!人生要面对许许多多的失去张学友自曝头痛大女儿叛逆 庆幸小女儿粘人晋《司马芳残碑》善待生命中的缺点怎样骂人长得丑且不带脏字二战意大利的超微型坦克
ExtJs典型用法之文件上传
分类: Javascript
2945人阅读
从今天起我会和大家一块来学习ExtJs的典型操作,前面我写了一些ExtJs的文章,那个系列主要是系统的来介绍Ext如何使用。但是我们知道如果仅仅那样来介绍会遗漏很多实用的内容,因此我今后会继续写一些常用的Ext操作方面的内容,暂且叫做"ExtJs典型用法"系列吧。
今天我们首先看一下Ext中如何上传文件。我们知道在传统的html中有file组件(也就是type为file的input组件),但是我们也可以看到在Ext中是没有相应的组件的。那么我们如何来上传文件呢?在Ext中要完成上传其实很简单,只需要设置FormPanel的fileUpload属性和textfield的inputType属性即可。好,废话不多说,直接看代码吧:
前台代码:Ext.onReady(function(){
var fpFileUpload=new Ext.FormPanel({
id:'fpFileUpload',
frame:true,
fileUpload:true,
//url:'Default.aspx',
buttonAlign:'center',
var winFielUpload=new Ext.Window({
title:'文件上传',
//****renderTo:'divWindow',//对于window不要使用renderTo属性,只需要调用show方法就可以显示,添加此属性会难以控制其位置
width:350,
height:100,
layout:'fit',
autoDestory:true,
modal:true,
closeAction:'hide',
window.winFielUpload=winFielU
function showWindow(){
winFielUpload.show();
}后台代码:using Susing System.Collections.Gusing System.Lusing System.Wusing System.Web.UI;using System.Web.UI.WebCusing System.IO;using System.Web.Script.Snamespace FileUpload{ public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { try { if (Request.Files.Count == 0) { } else { HttpPostedFile file = Request.F if (file.ContentLength & 0 && !string.IsNullOrEmpty(file.FileName)) { file.SaveAs(Server.MapPath("/UploadFile/" + Path.GetFileName(file.FileName))); //FileInfo fileInfo=new FileInfo(Server.MapPath("/UploadFile/" + Path.GetFileName(file.FileName))); //JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); Response.Write("{success:true}");//前台就是通过json中success的true活false来判断是否成功的,切记! } } } catch (Exception ex) { Response.Write("{success:false}"); } Response.End(); } }}这样就可以成功的上传文件了
虎皮凤爪打麻将要诀,送给以前常输的你北美崔哥侃中情局局长:天下男人皆好色 !每天睡8小时死得更快 加速死亡的十事工作场上的敬茶礼仪失恋追想曲―童丽青春无邪小美女传倪萍与赵本山搭档演小品 回应:我不知道天津大学自主招生自荐书
儿子在2007年高考中以市状元及数学满分进清华的妈妈——“我”的教子经验:
家庭作业几件事:
1、放学后做作业:规定时间,到时间就不准他做了。他说家庭作业做不完,明天会被老
今生只做你解语的红颜文网络编辑制作 白石秋水姗姗走近,在彼此欣怡的目光里藏着猝不及防的相知,是怎样的一份缘牵?  注定于千山外遥望,却在网络天涯的一角,同声低诉。用
适用于iPhone AKG K328入耳式耳塞到货 05:11:30 来源: 中关村在线网站(北京) 有0人参与 手机看新闻
(0)今天我们从位于中关村鼎好电子城三层的AKG耳机北京专卖店获悉,AKG新款耳机
站在时光的彼岸,回看此岸的光阴,茫茫人海,每一场遇见,都是一次美丽;每一场离散,都是一次放逐。想来,这尘世间,最美好的感情,莫过于在对视的那一刻,擦出怦然心动的喜
黑发粥原料:黑豆1小把,黑米2把,黑芝麻1小把,百合10片,薏仁3把,核桃2个,大米2把,红糖适量。做法:每天中午把这些原料放碗里泡好,晚上开始熬粥,大概十几分钟水变黏稠就可EXTJS控件的附件上传,json解析_百度知道
EXTJS控件的附件上传,json解析
比如说有2张表,a表是存放附件的表
字段是id,类型和存放附件3个字段
b表有id,类型,附件(是根据a表中类型对应的那条数据的附件),新附件。。a类型=b类型的
如果a类型有相同类型的3条数据。每条数据里有1个附件,怎么把他显示到b
list界面中的那个附件里去
即:a有3个附件也就是把那3个附件显示到b的附件里去后台用的是json,我用前台循环出来只有1条。。。为啥。。。当然有更好的方法也行
在线等啊!!!!!!
给个思路也行啊。。。。
提问者采纳
前台循环出来只有1条,要搞清楚为什么?理论上,如果a类型有相同类型的3条数据,每条数据里有1个附件。那么3条数据的字段(id、存放附件)的值应该都不一样,而字段类型的值一样(都是a类型)。那么要看你的JSON,是按照类型,还是按照ID为主键存取的。如果按照类型来读写,那多条相同类型的记录,能否通过数组来表达?
提问者评价
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁小弟在用ExtJS + Struts2 做文件上传时,当文件上传成功后,一直显示上传的进度条,而Ext里提交后的回调函数却不能响应,为什么呢? Action内容: public String add() throws Exception {
InputStream is=new FileInputStream(file);
String root=ServletActionContext.getRequest().getRealPath("/myjs");
File destFile=new File(root,this.getFileFileName());
OutputStream os=new FileOutputStream(destFile);
byte[] buffer=new byte[400];
int length=0;
while((length=is.read(buffer))&0){
os.write(buffer,0,length);
msg="上传成功";
is.close();
os.close();
return SUCCESS; } JS的内容 var addform=new Ext.form.FormPanel({
fileUpload:true,
method:"post",
enctype:"multipart/form-data", buttons:[
text:"添加",
formBind:true,
handlerunction(){
if(addform.form.isValid()){
addform.getForm().submit({
waitMsg:"请稍等,正在添加!",
failureunction(form, action){
Ext.MessageBox.alert("失败",action.result.msg);
win.close();
success: function(form, action){
Ext.MessageBox.alert("成功",action.result.msg);
store.reload();
win.close();
}); struts.xml的内容
name="control/product/brand/manage"
class="cn.shop.web.action.product.BrandManageAction"&
&result type="json"&
&param name="excludeProperties"&brandService&/param&
&param name="contentType"&text/html&/param&
&/action& 上传文件的时候一直显示上传的进度条 firebug里面还报 点进错误里面看高亮的是 ext-all-debug.js里这个 this.decode = function(json){ return eval("(" + json + ')'); };
看我博客有篇文章。
已解决问题
未解决问题

我要回帖

更多关于 extjs表格控件 的文章

 

随机推荐