应用很简单明了,就是将一个需要修改的员工信息传递到一个页面然后自动把已存在的数据填写到合适的位置,然后供人修改
问题:后台数据可以得到,可是无法将数据绑定到指定控件上
代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!---->
<!-- Ext显示必须链接,前后顺序不能颠倒 -->
type="text/css">
<!-- End -->
<br> Ext.onReady(function(){ </p> <p>var reader = new Ext.data.JsonReader({<br> successProperty : 'success',<br> root : 'data'<br> }, [{<br> name : 'name',<br> type : 'String',<br> mapping : 'name'<br> }, {<br> name : 'address',<br> type : 'String',<br> mapping : 'address'<br> }, {<br> name : 'loves',<br> type : 'int',<br> mapping : 'loves'<br> }, {<br> name : 'memo',<br> type : 'String',<br> mapping : 'memo'<br> }]);</p> <p>var form = new Ext.form.FormPanel({<br> labelAlign:'right',<br> labelWidth:60,<br> title:'我的表单',<br> frame:true,<br> width:650,<br> url:'form.jsp',</p> <pre><code>items:[{ layout:'column', items:[{ columnWidth:.5, layout:'form', defaultType:'textfield', xtype:'fieldset', title:'姓名', autoHeight:true, items:[{ fieldLabel: '姓名', name:'name', value:reader.get('name') },{ fieldLabel: '地址', name:'address', value:reader.get('address') }] },{ columnWidth:.5, layout:'form', defaultType:'checkbox', xtype:'fieldset', title:'住址', style:'margin-left:20px;', autoHeight:true, items:[{ fieldLabel: '足球', inputValue:'1', name:'loves' },{ fieldLabel: 'DIY', inputValue:'2', name:'loves' },{ fieldLabel: '睡觉', inputValue:'3', name:'loves' },{ xtype:'panel',html:'<center><img src="icon-info.gif"/></center>' }] }] },{ xtype:'fieldset', title:'个人介绍', autoHeight:true, items:[{ width:545, xtype:'textarea', name:'memo', fieldLabel:'个人介绍' }] </code></pre> <p>}],<br> buttons:[{<br> text:'提交',<br> handler:function(){<br> form.getForm().submit();<br> }<br> },{<br> text:'读取',<br> handler:function(){<br> form.getForm().load({url:'Ds/Form.txt'});<br> Ext.MessageBox.alert('Msg',reader)<br> }<br> }]<br> }); </p> <p>form.render("form");<br> })<br>
我的后台Form.txt内容为
{success:true,data:[{
name:'Rooney',
address:'Mu',
loves:2,
memo:'Tank'
}]}
请大家帮我看看
还有两个问题,1.多选框如果取到选中值
2.表单提交的时候可不可以先把所有控件的值封装成json格式的数组然后传走呢?
Form表单数据自动填充
这样写吧
[code="java"]
this.form.on('render', function() {
this.form.load({
url : '***'
params : {
id : this.recordId
}
});
}, this);
[/code]
在render时去取数据,返回的格式还是一样.
1.多选框request.getParameterValues('**');取
2.提交表单到后台用request.getParameter('**');去取,如果想用json,只有在前台先取出表单值,再拼成json格式用ajax传到后台,但不好,不如直接提交表单
你没有必要在外面用reader..然后在form里value:reader.get('address')
formpanel里面..是有一个reader的属性的...你可以在formpanel里面写..
然后form.load就可以了..
片段
[code="java"]
form里的reader:
reader : new Ext.data.JsonReader( {
totalProperty : 'totalProperty',
root : 'root'
},[{
name : 'name'
},{
name : 'id'
},{
name : 'loginName'
},{
name : 'passwd'
}]
),
最后form.load下.
form.getForm().load({
url : '***',
params :{
id : recordId
}
});
[/code]