`

ExtJs Form表单的客户端添加修改和删除操作

阅读更多
这个例子主要完成利用ExtJs存储器store实现了表单的增加,修改和删除的功能
分成三部分。1.表单 2.窗口 3.表格

表单中包含文本框等form组件,为增加和修改页面提供了FormPanel对象。
1.表单

//利用继承写法的目的是使formInfo组件化,添加页面和修改页面可以实例化自己的formInfo,forInfo对象如下:

formInfo = Ext.extend(Ext.form.FormPanel,{
constructor:function(){
formInfo.superclass.constructor.call(this,{
width:500 ,
height : 400 ,
frame : true ,
defaultType : 'textfield' ,
defaults : {
anchor : '90%'
} ,
    //实例化form组件
items : [{
fieldLabel : '姓名' ,
name : "name"
},{
fieldLabel : '年龄' ,
name : 'age' ,
vtype : 'age'
},{
xtype : 'combo' ,
name : "sex" ,
typeAhead : true ,
fieldLabel : '性别' ,
triggerAction : 'all' ,
mode : 'local' ,
store : new Ext.data.SimpleStore({
data : [[1,'男'] , [2,'女']] ,
fields : ['myid' , 'mytext']
}) ,
valueField : 'myid' ,
displayField : 'mytext'
}] ,
        //定义方法。取得当前form的输入的值
getValue : function(){
if(this.getForm().isValid()){
return new Ext.data.Record(this.getForm().getValues())
}else{
throw Error("年龄输入有错误") ;
}
} ,
         //将Record对象_rset到form表单中
setValue : function(_r){
this.getForm().loadRecord(_r) ;
} ,
         //清空表单
resets : function(){
this.getForm().reset() ;
}
}) ;
}
}) ;

2:基类窗体。 基类窗体是为添加页面的窗体和修改页面的窗体提供了一个基类。基类窗体中定义了一个form属性,他就是上面提到的formInfo,在基类的构造函数中初始化了form属性,及new formInfo(),在实现添加和修改的时候可以直接继承基类窗体。而不用继承Ext.window,基类窗体中添加了一个submit事件,当点击确定按钮的时候触发该事件,并将他本身和form中的值作为参数传递。代码如下
var infoWin = Ext.extend(Ext.Window,{
form : null ,     //定义属性form
closeAction : 'hide' ,
constructor : function(){
//在构造函数中初始化form属性
this.form = new formInfo()  ;
infoWin.superclass.constructor.call(this,{
width : 500 ,
height : 400,
frame : true ,
items : this.form ,
buttons : [{
text : '确定' ,
//当点击确定的时候执行onAddSubmit方法
handler :this.onAddSubmit ,
scope : this
},{
text : '取消' ,
handler : this.close ,
scope : this
}]
}) ;
//添加一个事件submit
this.addEvents("submit") ;
} ,
//当点击确定后触发的事件
onAddSubmit : function(){
try{
//触发submit事件并传递参数this--窗体本身和this.form.getValue()--form中输入的值
this.fireEvent("submit" , this,this.form.getValue()) ;
}catch(err){
return ;
}
}  ,
//关闭表单
close : function(){
this.form.resets() ;
this.hide() ;
}
}) ;
添加页面窗体和修改页面窗体
在这两个窗体中都继承了基类窗体,及infoWin,继承之后他们就有了基类窗体的所有属性,方法和事件,根据他们不同的需求实现submit触发后的功能,代码如下:
var addWin = Ext.extend(infoWin,{
title : '添加信息'
}) ;

var updateWin = Ext.extend(infoWin,{
title : '修改信息' ,
//添加方法,作用是把列表中选中的行的记录现实在表单中
setValue : function(_r){
this.form.getForm().loadRecord(_r) ;
}
}) ;

gridInfo对象
gridInfo对象的作用是显示表格,它定义了属性addWin和updateWin,分别是addWin和updateWin的实例,根据需要定义了一系列的方法,代码如下:
gridInfo = Ext.extend(Ext.grid.GridPanel,{

addWin:null ,
updateWin :null  ,
constructor:function(){
this.addWin = new addWin() ;
this.updateWin = new updateWin() ;
gridInfo.superclass.constructor.call(this,{
title:'表格信息' ,
width:350 ,
height : 400 ,
tbar:[{
text : '添加' ,
listeners:{
'click' :{
fn:function(){
this.addWin.show() ;
},
scope : this
}
}
},{
text : '修改' ,
listeners : {
'click' : {
fn : function(){
try{
this.updateWin.setValue(this.getSelect()) ;
this.updateWin.show()
}catch(e){
Ext.Msg.alert("系统提示",e.description) ;
}
},
scope : this
}
}
},{
text : '删除' ,
listeners : {
'click' : {
fn : function(){
this.onRemoveClick(this) ;
} ,
scope : this
}
}
}] ,
colModel: new Ext.grid.ColumnModel([{
header:'姓名'
},{
header:'年龄'
},{
header:'性别'
}]) ,
store:new Ext.data.Store({
data:[['张三',28,'男'],['李四',30,'女']] ,
reader:new Ext.data.ArrayReader({

},Ext.data.Record.create([{
name : 'name'
},{
name : 'age'
},{
name : 'sex'
}]))
}) ,
sm : new Ext.grid.RowSelectionModel({
single:true ,
listeners:{
'rowselect' : {
fn:function(_sel,_index,_record){
this.fireEvent('rowselect',_record) ;
},
scope:this
}
}
}) ,
renderTo:Ext.getBody()  ,
//表格中添加一条数据
insert : function(_r){
this.store.add(_r) ;
} ,
//当点击添加后触发的事件
onInsertSubmit : function(_win,_r){
this.insert(_r) ;
_win.close() ;
},
//显示修改界面
showUpdateWin : function(){
this.updateWin.show() ;
} ,
onUpdateSubmit : function(_win,_r){
this.update(_r) ;
_win.close() ;
} ,
update : function(_r){
//alert(Ext.util.JSON.encode(_r.data)) ;
var rs = this.getSelect() ;
for(_data in rs.data)
{
rs.set(_data,_r.get(_data)) ;
}
rs.commit() ;
} ,
onRemoveClick:function(_grid){
Ext.Msg.confirm("系统提示","是否删除记录",this.onRemoveRecord,this)
} ,
onRemoveRecord : function(msg){
if(msg == 'yes'){
this.removeRecord(this.getSelect()) ;
}
} ,
removeRecord : function(_r){
this.store.remove(_r) ;
} ,
//获得表格中选中的记录
getSelect : function(){
var _sel = this.getSelectionModel() ;
if(_sel.getCount()==0){
throw Error("请选择记录") ;
return ;
}else{
return this.getSelectionModel().getSelected() ;
}
}
}) ;
this.addEvents('rowselect') ;
this.addWin.on("submit",this.onInsertSubmit,this) ;
this.updateWin.on('submit',this.onUpdateSubmit,this) ;
}
}) ;

分享到:
评论

相关推荐

    ExtJs 动态添加表单

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

    extjs动态表单

    从提供的标签“源码”和“工具”来看,可能包含的资源kk.doc可能是一个示例代码文档或教程,展示了如何在ExtJS中创建和操作动态表单的详细步骤和代码片段。对于初学者来说,阅读和理解这样的文档有助于深入掌握动态...

    ExtJs4.0 表单提交Demo

    - **创建表单组件**:首先,定义一个FormPanel,并在其内部添加所需的表单字段,例如`Ext.form.field.Text`、`Ext.form.field.Date`等。 - **配置表单行为**:为FormPanel设置action属性,指定提交的URL,或者在...

    extjs-form组件配置参数详解

    `Ext.form.Action`是ExtJS中的一个类,用于处理表单提交和加载数据的动作。它提供了多种配置选项和属性来控制表单操作的过程。 **配置项** - **success**: 执行成功后的回调函数,该函数接收两个参数:`form`(当前...

    Extjs验证表单 Extjs验证表单

    ### Extjs 表单验证详解 #### 一、引言 在现代Web开发中,确保用户输入的有效性和安全性至关重要。Extjs作为一种强大的JavaScript框架,提供了丰富的功能来帮助开发者轻松实现客户端验证。本文将深入探讨Extjs中的...

    extjs4 入门基础,form、grid、tree

    网格是展示和操作大量结构化数据的利器。在ExtJS中,`Ext.grid.Panel`是创建网格的主要组件。你可以通过`columns`配置定义列,每列由一个对象表示,包含`text`(列标题)、`dataIndex`(对应数据源的字段名)和`...

    这是有关extjs的例子,里面有各种表单的定义,grid的实现

    在这个有关ExtJS的例子中,我们主要关注的是表单(Forms)的定义和Grid的实现。 表单在任何应用程序中都扮演着至关重要的角色,它们用于收集用户输入并将其发送到服务器进行处理。在ExtJS中,表单通常由各种字段...

    Extjs优化(二)Form表单提交通用实现

    在本文中,我们将深入探讨如何优化EXTJS中的Form表单提交过程,特别是在EXTJS应用程序中。EXTJS是一个强大的JavaScript框架,用于构建富客户端Web应用程序,而表单提交是任何应用程序中不可或缺的部分。优化这一过程...

    extjs表单验证特殊字符

    EXTJS表单验证主要依赖于`Ext.form.field.Base`组件,它是所有表单字段的基础类。每个表单字段都可以配置验证规则,通过`vtype`属性定义基本的验证类型,或者使用`validators`属性自定义验证函数。对于特殊字符的...

    EXTJS修改颜色实例源码

    - `Ext.form.FormPanel` 是 EXTJS 中用于创建表单的组件,它允许你添加各种表单元素如文本框、选择框等。 - 在实例中,`title` 属性定义了面板的标题,`frame` 为真表示面板具有边框,`plain` 设置为真让边框更...

    Extjs4--Form登录功能,结合struts2

    ExtJS 4是一个强大的JavaScript库,用于创建富客户端应用程序,而Struts2是一个流行的Java服务器端MVC框架,常用于处理用户请求和业务逻辑。 **一、ExtJS 4基础知识** 1. **组件模型**:ExtJS 4基于组件模型,允许...

    extjs-form:使用 Sencha ExtJS 的简单表单

    在“extjs-form:使用 Sencha ExtJS 的简单表单”这个主题中,我们将深入探讨如何利用 ExtJS 创建功能丰富的表单。 首先,让我们了解 ExtJS 表单的基本结构。一个表单通常由若干个字段(Field)组成,每个字段都有...

    extjs中的formPanel以及表单的应用

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

    extjs之颜色选择器的使用

    EXTJS 是一个强大的JavaScript 应用程序框架,用于构建富客户端Web应用。ColorField 是EXTJS 中的一个组件,专门用于颜色选择。在EXTJS 应用中,颜色选择器提供了用户友好的界面,使得用户能够方便地从预设的颜色...

    EXTJS代码生成器

    1. **Store(存储)**:EXTJS中的数据存储,连接到模型并管理数据加载、刷新、添加、删除等操作,对应于数据库的CRUD操作。 2. **Grid(表格)**:显示和编辑数据的组件,通常与Store和Model结合使用,可以实现数据...

    ext form小例子

    综上所述,“EXT form小例子”涵盖了EXTJS Form组件的基本用法和验证机制,特别是客户端验证和`Ext.form.Vtype`的扩展应用,对于理解和实践EXTJS表单开发具有很好的指导价值。通过深入学习和实践这些知识点,开发者...

    ExtJs 实现select列表选中项时添加删除

    标题中的"ExtJs 实现select列表选中项时添加删除"指的是在ExtJS应用中创建一个下拉选择列表(Select List),并且当用户选择某一项时,能够执行添加或删除操作。这通常涉及到事件监听、数据模型的操作以及用户界面的...

    Extjs 后台模板

    例如,Grid 用于显示和操作数据,Panel 用于组织内容,Form 用于数据输入和验证,Tree 用于展示层级关系的数据。 3. **数据绑定和Store**:在ExtJS中,数据通常通过Store对象来管理,它可以与服务器进行数据交换,...

    extjs2----关于extjs 的使用,操作

    在标题"extjs2----关于extjs 的使用,操作"中,我们可以看出这是一份关于ExtJS 2.0版本的使用指南,主要涵盖了其基本操作和应用。描述中提到内容较为初级,适合初学者学习,这表明我们将探讨的是ExtJS的基础概念和...

Global site tag (gtag.js) - Google Analytics