• ExtJS4加载FormPanel数据的几种方式


    我们做web应用最多的就是处理表单,extjs为我们提供了很多处理表单的功能,很多初学者疑惑怎么加载表单数据,到底能用什么方式加载?本文中,我将我自己实验过的进行一下总结,自己备忘,也希望能帮助到其他人。
    1.使用loadRecord加载Model数据。这也是我目前用的较多的。
     比如有个角色管理,定义如下model“:

    Ext.define('roleModel', {  
        extend: 'Ext.data.Model',  
        fields: [  
            { name: 'id', mapping: "id" },      
            { name: 'roleName', mapping: "roleName" },  
            { name: 'status', mapping: "status" },  
            { name: 'remark', mapping: "remark" }  
        ],  
        idProperty: 'id'  
    });  

    定义一个表单如下:

    var formId = "roleEditForm";  
    var formPanel = Ext.create("Ext.form.Panel",{  
                        id: formId,  
                        height: 270,  
                        bodyStyle: "padding-top:20px;",  
                        url: "role/save.action",  
                        method: 'POST',  
                        defaults:  
                            {  
                             200,  
                            labelStyle: "padding-left:20px;",  
                                border: false  
                            },  
      
                        items: [  
                            {  
                                name: 'roleName',  
                                fieldLabel: '角色名称',  
                                xtype: "textfield",  
                                maxLength:40  
                            }  
                            ,  
                            {  
       
                                name: 'remark',  
                                fieldLabel: '备注',  
                                xtype: "textfield",  
                                300,  
                                maxLength:200  
                            }  
                            ,  
                              
                            {  
                                name: 'id',  
                                xtype: "hidden",  
                                value:id  
                            }  
                              
                             ,  
                            {  
                                name: 'method',  
                                xtype: "hidden",  
                                value:id==0?"save":"update"  
                            }  
                        ]  
                    })  

    那么我加载数据的时候使用loadRecord方式:

    var form = Ext.getCmp(formId);  
                    var id=1;//角色的id  
                    Ext.ModelMgr.getModel('roleModel').load( id,{  
                        url:"role/getinfo.action",  
                        success: function(obj) {  
                            form.loadRecord(obj);  
                        }  
                    });  

    2.第二种是给formpanel增加reader的方式。
     在第一种方法中不需要reader,只是把record中的字段与表单中字段的name对应起来,就可以加载数据了。reader方式则需要生成一个reader对象,利用reader去匹配字段,达到填充数据的目的

    form不说了,首先定义reader:

    var roleReader = Ext.create('Ext.data.reader.Json', {  
      
            root : 'data',//数据的根属性,如果只是纯数据对象,没有什么root,那写""(空串)或者空着就行  
            model :'roleModel'//使用的model  
    });  

    定义一个reader,reader中指定了要使用的model。然后表单中指定该reader:

    reader: roleReader ,  
    formPanel.load({  
    url: 'role/getinfo.action',  
    params: {'id':roleid}  
    });  
  • 相关阅读:
    vue路由对象($route)参数简介
    原生js写ajax请求(复习)
    js,jq.事件代理(事件委托)复习。
    CSS 设置table下tbody滚动条
    H5 调用手机摄像机、相册功能
    css实现六边形图片(最简单易懂方法实现高逼格图片展示)
    input表单的type属性详解,不同type不同属性之间区别
    js对象,set和get方法 的三种实现形式
    day03 变量
    day01 js三种导入html的方法、js书写规范、变量的基本使用、变量提升
  • 原文地址:https://www.cnblogs.com/hetaojs/p/5760662.html
Copyright © 2020-2023  润新知