Ext之表单

1、使用表单提交数据

// form start
    var form = new Ext.form.FormPanel({
        //表单的标题
        title: ‘编辑学生信息‘,
        // 表单是否有色背景
        frame: true,
        // 表单包围items内容的边框
        border : true,
        //表单的宽度
        width: 260,
        //表单的高
        autoHeight: true,
        // defaultType是在items下的元素没有设置xtype时的缺省值
        defaultType: ‘textfield‘,
        // 对于下一级的元素,如果有共同的配置放在defaults中
        defaults: {
            //是否允许为空
            allowBlank: false,
            //文本标签靠右
            labelAlign: ‘right‘,
            //文本标签的宽度
            labelWidth: 60
        },
        items: [{
            //通过form.getForm().findField("id").getValue()获取其值
              //或者var formValues=form.getForm().getValues(); //获取表单中的所有Name键/值对对象
              //获取formValues["firstname"];
            xtype: ‘hidden‘,
            name: ‘id‘
        },{
            //通过
            fieldLabel: ‘学号‘,
            name: ‘code‘,
            // anchor一般与布局column一起使用,columnWidth的值乘以anchor的值,即为本组件所占的长度。
            // 注意:anchor不可与设置长度的属性width同时出现,否则,width属性无效。
            anchor : ‘50%‘
        },{
            fieldLabel: ‘年龄‘,
            name: ‘age‘,
            xtype: ‘numberfield‘,
            allowNegative: false
        },{
            fieldLabel: ‘政治面貌‘,
            name: ‘political‘,
            xtype: ‘combo‘,
            store: new Ext.data.SimpleStore({
                fields: [‘text‘],
                data: [[‘群众‘],[‘党员‘],[‘团员‘]]
            }),
            emptyText: ‘请选择‘,
            mode: ‘local‘,
            triggerAction: ‘all‘,
            valueField: ‘text‘,
            displayField: ‘text‘,
            editable: false
        }],
        //通过Ext.getCmp(‘buttonSave‘).setText(‘添加‘)来改变文本
        buttons: [{
            id: ‘buttonSave‘,
            text: ‘添加‘,

            //单击按钮时调用的函数
            handler: function() {
                //提交表单前检测合法性
                if (!form.getForm().isValid()) {
                    return;
                }
                if (form.getForm().findField("id").getValue() == "") {
                    // submit提交表单,提交的参数包括所有textfield的name属性的值
                    form.getForm().submit({
                        url: ‘./jsp/save.jsp‘,
                        //success的条件是后台相应true或者json的success属性为true
                        //不同于ajax的success,后者如果返回200即为success
                        success: function(f, action) {
                            if (action.result.success) {
                                Ext.Msg.alert(‘消息‘, action.result.msg, function() {
                                    //重置表单
                                    form.getForm().reset();
                                    Ext.getCmp(‘buttonSave‘).setText(‘添加‘);
                                });
                            }
                        },
                        failure: function() {
                            Ext.Msg.alert(‘错误‘, "添加失败");
                        }
                    });
                }
            }
        },{
            //使用Ext.Ajax提交请求,如果返回200即为success
            text: ‘删除‘,
            handler: function() {
                var id = form.getForm().findField(‘id‘).getValue();
                if (id == ‘‘) {
                    Ext.Msg.alert(‘提示‘, ‘请选择需要删除的信息。‘);
                } else {
                    Ext.Ajax.request({
                        url: ‘./jsp/remove.jsp‘,
                        success: function(response) {
                            var json = Ext.decode(response.responseText);
                            if (json.success) {
                                Ext.Msg.alert(‘消息‘, json.msg, function() {
                                    grid.getStore().reload();
                                    form.getForm().reset();
                                    Ext.getCmp(‘buttonSave‘).setText(‘添加‘);
                                });
                            }
                        },
                        failure: function() {
                            Ext.Msg.alert(‘错误‘, "删除失败");
                        },
                        //手动传参
                        params: "id=" + id
                    });
                }
            }
        }]
    });
    // form end

2、form自带url属性

如果表单只有一个按钮需要提交,那么在form配置属性url:‘add.jsp‘,

在button的handler中执行form.getForm.submit(...);即可提交
3、表单填充数据

 //表单自动填充后台传来的json数据
     var reader = new Ext.data.JsonReader({},[
        {name: ‘text‘, type: ‘string‘},
        {name: ‘number‘, type: ‘float‘},
        {name: ‘date‘, type: ‘date‘, dateFormat: ‘Y-m-dTH:i:s‘},
        {name: ‘combo‘, type: ‘int‘}
    ]);

 form里设置属性
 reader: reader,
 //url返回的数据
 [{
    text: ‘textField‘,
    number: 12.34,
    date: ‘2008-01-01T00:00:00‘,
    combo: 1
}]

//填充数据
 form.getForm().load({url:‘10-01.txt‘});

4、给按钮设置图标
首先需要在html中定义样式

<style type=text/css>
.action-find {
 background-image: url(images/user/action-find.gif );
}
</style>

在button的属性中设置

iconCls:‘action-find‘,

5、实现表单的textfield并排

var form = new Ext.form.FormPanel({
        buttonAlign : ‘center‘,
        title : ‘个人排名查询‘,
        //是否有色背景
        frame : false,
        border : true,
        labelAlign: ‘right‘,
        labelWidth: 60,

        items : [ {
            layout : ‘column‘,
            border : false,
            defaults : {
                // 去掉每个列(items的元素)各自的边框
                border : false,
                // 上右下左
                bodyStyle : ‘padding:20px 0px 0px 120px;‘,
            },
            items : [
                    {
                        columnWidth : .5,
                        layout : ‘form‘,
                        defaultType : ‘textfield‘,
                        border : false,

                        items : [ {
                            fieldLabel : ‘姓名‘,
                            anchor : ‘50%‘

                        }, {
                            fieldLabel : ‘工号‘,
                            anchor : ‘50%‘

                        }, {
                            xtype : ‘datefield‘,
                            fieldLabel : ‘起始日期‘,
                            name : ‘date‘
                        }, {
                            xtype : ‘datefield‘,
                            fieldLabel : ‘结束日期‘,
                            name : ‘date‘
                        } ]
                    },
                    {
                        columnWidth : .5,
                        border : false,

                        layout : ‘form‘,
                        defaultType : ‘textfield‘,
                        items : [
                                {
                                    xtype : "combo",
                                    fieldLabel : ‘所属中心‘,
                                    name : ‘combo‘,
                                    store : new Ext.data.SimpleStore({
                                        fields : [ ‘value‘, ‘text‘ ],
                                        data : [ [ ‘value1‘, ‘武汉客服‘ ],
                                                [ ‘value2‘, ‘成都客服‘ ] ]
                                    }),
                                    displayField : ‘text‘,
                                    valueField : ‘value‘,
                                    mode : ‘local‘,
                                    emptyText : ‘请选择‘
                                },
                                {
                                    xtype : "combo",
                                    fieldLabel : ‘所属科室‘,
                                    name : ‘combo‘,
                                    store : new Ext.data.SimpleStore({
                                        fields : [ ‘value‘, ‘text‘ ],
                                        data : [ [ ‘value1‘, ‘金普卡五室‘ ],
                                                [ ‘value2‘, ‘金普卡五室‘ ] ]
                                    }),
                                    displayField : ‘text‘,
                                    valueField : ‘value‘,
                                    mode : ‘local‘,
                                    emptyText : ‘请选择‘
                                },
                                {
                                    xtype : "combo",
                                    fieldLabel : ‘所属组别‘,
                                    name : ‘combo‘,
                                    store : new Ext.data.SimpleStore({
                                        fields : [ ‘value‘, ‘text‘ ],
                                        data : [ [ ‘value1‘, ‘组1‘ ],
                                                [ ‘value2‘, ‘组2‘ ] ]
                                    }),
                                    displayField : ‘text‘,
                                    valueField : ‘value‘,
                                    mode : ‘local‘,
                                    emptyText : ‘请选择‘
                                } ]
                    }

            ]

        } , {
            border:false,
            // button的方位,要放在buttons的上面的才有效
            buttonAlign : ‘center‘,
            // button最小的宽度
            minButtonWidth : 60,
            // 注意不要把button写进items,它是form的.
            // 如果写进items,buttonAlign等相关属性要跟着
            buttons : [ {
                text : ‘查询‘,
                iconCls:‘action-find‘
            }, {
                text : ‘导出EXCEL‘,iconCls:‘action-export-xls‘
            } ]
        }]
    });

Done

时间: 2024-12-22 07:21:06

Ext之表单的相关文章

Ext JS表单Ext.form.FormPanel

1.表单 对于传统的b/s应用来说,数据录入元素是放在表单<form>标签里面的.而对于ExtJS应用来说,则可以直接使用FormPanel控件来存放表单中的元素.FormPanel继承自Panel,在Panel的基础上提供与表单相关的各种特性,比如可以指定表单提交的url.指定表单提交方式.是否是二进制提交等:另外FormPanel固定使用form布局,前面关于布局一节中的内容我们说过,form布局也就是专门用于组织包含输入元素的布局. 看下面的代码: 1 Ext.onReady(funct

Ext开场表单布局设计

var form = new Ext.form.FormPanel({ labelAlign: 'right', labelWidth: 60, buttonAlign: 'center', title: 'form', frame:true, width: 450, url: '04_01_01.jsp', items: [{ bodyStyle: 'background:transparent;border:0px;', layout:'column', items: [{ bodyStyl

ExtJs 第二章,Ext.form.Basic表单操作

1.认识Ext.form.Panel表单面板         Ext.form.field.CheckBox 复选框 checkboxfield Ext.form.CheckBoxGroup 复选框组 checkboxgroup Ext.form.field.ComboBox 下拉列表框 combo Ext.form.field.Date 日期选择框 datefield Ext.form.field.Display 文本展示组件 displayfield Ext.form.FieldContai

Ext.js form 表单提交问题

var form = new Ext.form.FormPanel({ labelAlign : 'right', border : false, bodyStyle : 'background-color: transparent;padding:5px', defaults : { xtype : 'textfield', anchor : '90%' }, items : [{ name : 'rptId', hidden : true }, { name :'parId', hidden

Extjs的form表单自动装载数据(通过Ext.data.Model的代理加载数据)

在做项目的时候遇到一个问题,以前双击grid页面一行数据的时候,会吧双击这一行的数据自动加载到双击的页面(Ext的弹出框),可以通过this.down(''form).getForm().loadRecord(record)来自动加载,可是现在有一个需求就是双击grid一行弹出一个新的浏览器页面(不是ext的弹出框,通过window.open()实现),只能把双击的id传到页面,再重新查数据手动赋值,如果一个页面字段很多,一个一个赋值是很辛苦的,所以就想能不能自动装载数据 通过长时间研究发现,t

Ext.Form 自动填写表单内容

前台: 表单必须含有name属性 if (action == 'edit') { MyForm.getForm().load({ url: '../../data/personMatter/EmployeeHandler.ashx', params: { Action: action,empId:empId }, failure: function (form, action) { Ext.Msg.alert("Load failed", action.result.errorMess

destoon 信息发布表单提交验证

sell 模块的form表单如下: <form method="post" id="dform" action="?" target="send" onsubmit="return check();"> <tr> <td class="tl"><span class="f_red">*</span> 行业分类

EXTJS 表单提交

EXTJS框架中,在提交表单时,可有3种方式: 方法一: 普通的 Form 提交方式, 主要使用 form.submit() 方法来将表单提交到后台,在后台是根据表单的 name 属性来获取表单中元素的值 ,代码如下: 1 Ext.onReady(function () { 2 var formPanel = new Ext.create({ 3 xtype: 'form', 4 id: 'multiColumnForm', 5 collapsible: false, 6 frame: true

基于Extjs的web表单设计器 第二节——表单控件设计

这一节介绍表单设计器的常用控件的设计. 在前面两章节的附图中我已经给出了表单控件的两大分类:区域控件.常用控件.这里对每个分类以及分类所包含的控件的作用进行一一的介绍,因为它们很重要,是表单设计器的基本元素,更是核心组成部门. 一.区域控件,它主要包含三个类型的控件:卡片区域.表格区域.混合区域.这三个控件是我们的其他控件的容器或者叫包装器,相当于VS里面的各种Panel.它们很重要,每种区域控件的作用都不一样,能够包含的控件类型也不大一样,它们三个区域相互配合使用,可以为我们的表单提供强大的支