loyalbluer
2008-08-08 18:27
浏览 485

Form表单数据自动填充的问题

应用很简单明了,就是将一个需要修改的员工信息传递到一个页面然后自动把已存在的数据填写到合适的位置,然后供人修改

问题:后台数据可以得到,可是无法将数据绑定到指定控件上

代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


MyExtFullForm.html



<!---->
<!-- Ext显示必须链接,前后顺序不能颠倒 -->
type="text/css">



<!-- End -->
<br> Ext.onReady(function(){ </p> <p>var reader = new Ext.data.JsonReader({<br> successProperty : &#39;success&#39;,<br> root : &#39;data&#39;<br> }, [{<br> name : &#39;name&#39;,<br> type : &#39;String&#39;,<br> mapping : &#39;name&#39;<br> }, {<br> name : &#39;address&#39;,<br> type : &#39;String&#39;,<br> mapping : &#39;address&#39;<br> }, {<br> name : &#39;loves&#39;,<br> type : &#39;int&#39;,<br> mapping : &#39;loves&#39;<br> }, {<br> name : &#39;memo&#39;,<br> type : &#39;String&#39;,<br> mapping : &#39;memo&#39;<br> }]);</p> <p>var form = new Ext.form.FormPanel({<br> labelAlign:&#39;right&#39;,<br> labelWidth:60,<br> title:&#39;我的表单&#39;,<br> frame:true,<br> width:650,<br> url:&#39;form.jsp&#39;,</p> <pre><code>items:[{ layout:&#39;column&#39;, items:[{ columnWidth:.5, layout:&#39;form&#39;, defaultType:&#39;textfield&#39;, xtype:&#39;fieldset&#39;, title:&#39;姓名&#39;, autoHeight:true, items:[{ fieldLabel: &#39;姓名&#39;, name:&#39;name&#39;, value:reader.get(&#39;name&#39;) },{ fieldLabel: &#39;地址&#39;, name:&#39;address&#39;, value:reader.get(&#39;address&#39;) }] },{ columnWidth:.5, layout:&#39;form&#39;, defaultType:&#39;checkbox&#39;, xtype:&#39;fieldset&#39;, title:&#39;住址&#39;, style:&#39;margin-left:20px;&#39;, autoHeight:true, items:[{ fieldLabel: &#39;足球&#39;, inputValue:&#39;1&#39;, name:&#39;loves&#39; },{ fieldLabel: &#39;DIY&#39;, inputValue:&#39;2&#39;, name:&#39;loves&#39; },{ fieldLabel: &#39;睡觉&#39;, inputValue:&#39;3&#39;, name:&#39;loves&#39; },{ xtype:&#39;panel&#39;,html:&#39;&lt;center&gt;&lt;img src=&quot;icon-info.gif&quot;/&gt;&lt;/center&gt;&#39; }] }] },{ xtype:&#39;fieldset&#39;, title:&#39;个人介绍&#39;, autoHeight:true, items:[{ width:545, xtype:&#39;textarea&#39;, name:&#39;memo&#39;, fieldLabel:&#39;个人介绍&#39; }] </code></pre> <p>}],<br> buttons:[{<br> text:&#39;提交&#39;,<br> handler:function(){<br> form.getForm().submit();<br> }<br> },{<br> text:&#39;读取&#39;,<br> handler:function(){<br> form.getForm().load({url:&#39;Ds/Form.txt&#39;});<br> Ext.MessageBox.alert(&#39;Msg&#39;,reader)<br> }<br> }]<br> }); </p> <p>form.render(&quot;form&quot;);<br> })<br>



我的后台Form.txt内容为

{success:true,data:[{
name:'Rooney',
address:'Mu',
loves:2,
memo:'Tank'
}]}

请大家帮我看看

还有两个问题,1.多选框如果取到选中值

2.表单提交的时候可不可以先把所有控件的值封装成json格式的数组然后传走呢?
Form表单数据自动填充

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • zhang26chao 2008-08-11 12:29
    已采纳

    这样写吧
    [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传到后台,但不好,不如直接提交表单

    点赞 打赏 评论
  • weixin_42316292 2008-08-11 16:23

    你没有必要在外面用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]

    点赞 打赏 评论

相关推荐 更多相似问题