`

extjs表单FormPanel提交数据和加载数据

阅读更多
转自:http://liuna718-163-com.iteye.com/blog/805522
在使用Extjs中,除了GridPanel以为,使用最多的应该用的是FormPanel了,在使用FormPanel肯定少不了,数据的提交和加载,现在本人总结下FormPanel数据提交和加载的方法
1.FormPanel数据提交包括两种方式,一种是使用BasicForm的submit方式进行ajax的异步提交,另一种是使用原始的HTML表单的提交方式
1.1BasicForm的submit方式进行ajax的异步提交
form.getForm().submit({  
    url: '<%=request.getContextPath()%>/formsort.do?method=test',  
    waitTitle : '请等待' ,  
    waitMsg: '正在提交中',  
    success:function(form,action){  
                //url后台返回的数据{success:true,msg:'成功'}                                       
    Ext.Msg.alert('提示','保存'+action.result.msg);  
    },  
    failure:function(form,action){  
    Ext.Msg.alert('提示','保存失败!');  
    }  
});  

完整代码如下:

var form = new Ext.form.FormPanel({  
        frame : true ,  
        defaultType : 'textfield' ,  
        buttonAlign : 'center' ,  
        labelAlign : 'right' ,  
        //此处添加url,那么在getForm().sumit方法不需要在添加了url地址了  
        url: '<%=request.getContextPath()%>/formsort.do?method=saveOrUpdateFormSort',   
        baseParams : {create : true },  
        labelWidth : 70 ,  
        items : [  
            {  
                fieldLabel : 'id' ,  
                xtype : 'hidden',  
                name : 'formSortUuid'  
            },  
            {  
                fieldLabel : '名称' ,  
                name : 'sortName'  
            },{  
                fieldLabel : '描述' ,  
                xtype : 'textarea' ,  
                name : 'description'  
            }  
        ] ,  
        buttons : [  
            {  
                text : '确定' ,  
                handler : function(){  
                    //FormPanel自身带异步提交方式  
                    form.getForm().submit({  
                    //url: '<%=request.getContextPath()%>/formsort.do?method=saveOrUpdateFormSort',  
                    waitTitle : '请等待' ,  
                    waitMsg: '正在提交中',  
                    success:function(form,action){  
                                //url后台返回的数据{success:true,msg:'成功'}                                       
                    Ext.Msg.alert('提示','保存'+action.result.msg);  
                    },  
                    failure:function(form,action){  
                    Ext.Msg.alert('提示','保存失败!');  
                    }  
                   });  
                 }  
                  
            }   
        ]  
});  
  

1.2原始的HTML表单的提交方式
采用原始的提交方式需要覆盖掉BasicForm的onSubmit和submit方法,完了直接调用submit即可
代码如下:

var form = new Ext.form.FormPanel({  
        frame : true ,  
        defaultType : 'textfield' ,  
        buttonAlign : 'center' ,  
        labelAlign : 'right' ,  
        baseParams : {create : true },  
        //覆盖BasicForm的onSubmit方法  
        onSubmit: Ext.emptyFn,  
        //覆盖BasicForm的submit方法  
        submit: function() {  
            form.getForm().getEl().dom.action = '<%=request.getContextPath()%>/formsort.do?method=saveOrUpdateFormSort' ;  
            form.getForm().getEl().dom.submit();  
        },  
        labelWidth : 70 ,  
        items : [  
            {  
                fieldLabel : 'id' ,  
                xtype : 'hidden',  
                name : 'formSortUuid'  
            },  
            {  
                fieldLabel : '名称' ,  
                name : 'sortName'  
            },{  
                fieldLabel : '描述' ,  
                xtype : 'textarea' ,  
                name : 'description'  
            }  
        ] ,  
        buttons : [  
            {  
                text : '确定' ,  
                handler : function(){  
                 /*采用传统的HTML的同步提交*/  
                     form.getForm().submit();  
                }  
                  
            }   
        ]  
});  

  说明:在BasicForm中有一个standardSubmit : Boolean
如果此项设置为true,将使用标准的HTML表单提交代替XHR(Ajax)方式的提交。 (默认值为 false)
在FormPanel把standardSubmit设置为true,就可以用同步提交的方式,但因为extjs2.0版本中sumit源码里边没有指定原始form表单的action属性,所以没有办法提交,但在3.0版本已经添加了,可以直接指定standardSubmit为true即可进行同步提交
2.FormPanel数据加载采用1BasicForm的load方法
1BasicForm的load方法,要求数据返回方式必须满足以下格式
 
{  
        success: true,  
        data: {  
        formSortUuid: "Fred. Olsen Lines",  
        namename: "FXT",  
        description: "OSL"  
        }  
 }  

完整代码如下:
 
var form = new Ext.form.FormPanel({  
        frame : true ,  
        defaultType : 'textfield' ,  
        buttonAlign : 'center' ,  
        labelAlign : 'right' ,  
        baseParams : {create : true },  
        labelWidth : 70 ,  
        items : [  
            {  
                fieldLabel : 'id' ,  
                xtype : 'hidden',  
                name : 'formSortUuid'  
            },  
            {  
                fieldLabel : '名称' ,  
                name : 'sortName'  
            },{  
                fieldLabel : '描述' ,  
                xtype : 'textarea' ,  
                name : 'description'  
            }  
        ] ,  
        buttons : [  
            {  
                text : '加载' ,  
                handler : function(){  
                /* 
                { 
                        success: true, 
                        data: { 
                        formSortUuid: "Fred. Olsen Lines", 
                        namename: "FXT", 
                        description: "OSL" 
                        } 
                 } 
                */  
                form.getForm().load({  
                    url: '<%=request.getContextPath()%>/formsort.do?method=saveOrUpdateFormSort',  
                    waitTitle : '请等待' ,  
                    waitMsg: '正在加载中',  
                    success:function(form,action){  
                                alert(action.result.data)                                     
                      
                    },  
                    failure:function(form,action){  
                    Ext.Msg.alert('提示','保存失败!');  
                    }  
                });  
                  
            }   
        ]  
}); 
分享到:
评论

相关推荐

    ExtJs4.0 表单提交Demo

    在表单提交场景下,Ext Ajax提供了方便的API进行数据的序列化和提交。 3. **表单数据序列化** 在使用Ext Ajax提交表单前,通常需要先将表单数据序列化为JSON或URL编码格式。ExtJs 4.0的FormPanel对象提供了`get...

    extjs中的formPanel以及表单的应用

    对于更复杂的需求,如动态添加或删除表单字段,FormPanel 提供了`add`和`remove`方法。同时,`loadRecord`方法可以用来从记录对象中加载表单数据,而`getValues`和`getRecord`则用于获取当前表单的值或转换为记录...

    ExtJs 动态添加表单

    它可能包含了创建表单、动态添加和删除字段的逻辑,以及与服务器通信的代码。通过阅读和分析这个文件,我们可以更深入地了解如何在实际项目中应用这些技术。 总之,动态添加表单是ExtJS开发中的一个重要技巧,它...

    Extjs4的FormPanel从后台load json数据的要点

    在本篇文章中,我们将深入探讨如何使用Extjs4中的FormPanel组件从后台加载JSON数据,并将其映射到表单的各个字段中进行显示。这是一项非常实用的技术,尤其是在需要动态填充表单的情况下。 ### 一、Extjs4 ...

    ExtJs实现数据加载和提交经典代码

    根据提供的文件信息,我们可以深入探讨如何在ExtJS中利用FormPanel进行数据加载和提交的核心概念与实践技巧。 ### FormPanel的Form对象 在ExtJS框架中,`FormPanel`是处理表单数据的一个核心组件。当我们在使用`...

    如何提交Extjs 中的表单

    总的来说,提交ExtJS表单涉及前端的表单构建、事件监听以及后端的接收和处理。确保前后端通信的正确性,理解HTTP请求和响应的机制,以及熟悉ExtJS的API,都是实现这一功能的关键。通过以上步骤,你可以顺利地完成...

    简单的两种Extjs formpanel加载数据的方式

    在ExtJS中,`Ext.form.Panel`(或简称为`formpanel`)是一种非常重要的组件,用于创建表单来收集用户输入的数据。本文将详细介绍两种在ExtJS formpanel中加载数据的方法,以供开发者参考。 ### 方法一:使用`...

    ExtJS的表单

    ExtJS的表单使用FormPanel容器 表单使用的布局方式:form和formtable布局 ExtJS的表单和html的form标签是相似的,新建一个FormPanel实际上就是新建一个html的form标签,只是添加许多Ext的样式而已

    extJs中关于formPanel动态添加组件的验证问题

    在EXT JS这个强大的JavaScript框架中,FormPanel是用于创建表单的重要组件,它允许开发者构建交互式的、数据驱动的Web应用程序。FormPanel不仅提供了一种布局管理方式,还支持各种表单元素,如文本框、复选框、下拉...

    FCKeditor结合extjs实例

    这种结合允许用户在表单提交内容时,享受到类似于桌面应用的文本编辑体验,同时利用ExtJS的其他功能,如表格展示、数据管理和用户界面的美化。 集成FCKeditor到ExtJS应用中通常需要以下步骤: 1. 引入FCKeditor的...

    自我扩展FormPanel 和Store

    FormPanel是一个用于创建表单的组件,它提供了丰富的布局和表单控件,如文本框、复选框、下拉列表等,使得用户可以输入、编辑和提交数据。Store则是一个数据容器,它负责存储和管理数据模型,可以与各种组件(如...

    Extjs中常用表单介绍与应用

    本文将详细介绍ExtJS中常用表单组件的创建、应用以及验证和数据绑定等方面的知识,旨在帮助读者深入理解和掌握ExtJS表单的使用方法。 ### 表单面板(FormPanel)的创建 在ExtJS中,表单面板(FormPanel)是创建...

    extjs4如何给同一个formpanel不同的url_.docx

    在EXTJS4的API中,通常我们会看到一个`url`属性,这个属性指定了FormPanel在提交表单时将数据发送到的服务器端处理地址。然而,如果希望同一个FormPanel实例能够根据不同的上下文提交到不同的URL,我们需要稍微调整...

    EXT提交表单,ASP.NET

    1. **创建接收端点**:创建一个ASP.NET页面或Web API控制器方法,这个方法会接收EXTJS表单提交的数据。数据通常以POST方式发送,ASP.NET可以通过`Request.Form`或`Request.InputStream`来获取。 2. **处理数据**:...

    轻松搞定Extjs 带目录

    表格组件GridPanel是Extjs中的亮点之一,它不仅可以展示大量数据,还支持复杂的列模型和行操作。此外,GridPanel的分页功能和扩展组件如摘要行、可展开行、分组视图等,让数据的展示更加直观和易于管理。 通过学习...

    extjs2.1库文件

    Model定义了数据结构,Store负责存储和管理数据,Proxy则处理数据的获取和提交,实现了数据和视图的实时同步。 4. **事件处理**:ExtJS 2.1的事件驱动模型使得用户交互变得简单,每个组件都有一系列预定义的事件,...

    ExtJs、ASP.net运用Linq to SQL与SQL储存过程交互.

    1. **创建FormPanel**:在前端使用ExtJs创建FormPanel,添加必要的表单字段。 2. **设置表单提交方式**:配置FormPanel的submit方法,指定服务器端处理脚本的URL。 3. **服务器端处理**:服务器端(ASP.net)接收...

    asp.net下extjs完整实例

    用户可以通过EXTJS的FormPanel进行预订操作,提交表单数据到ASP.NET的服务器端方法,处理预订逻辑并返回响应。 EXTJS还支持Ajax通信,这与ASP.NET的MVC模式或Web Forms模式都非常契合。EXTJS的Ajax请求可以调用ASP...

    Extjs和数据库交互,增删改查

    1. 创建(Create):当用户添加新记录时,Store会将数据提交给Proxy,Proxy再将请求发送到服务器。服务器处理请求后,返回成功或失败的响应,Store根据响应更新其内部状态。 2. 读取(Read):通过Store的load方法...

    extjs上传全代码

    6. **服务器端处理**: 在EXTJS中完成前端的文件选择和提交后,服务器端需要接收并处理这些上传请求。这通常涉及到接收文件流,将其保存到服务器的指定位置,并可能需要返回一些确认信息。 7. **进度条显示**: 虽然...

Global site tag (gtag.js) - Google Analytics