`

EXT 模块化 编程实现人员信息的添加

 
阅读更多
对Ext 模块化编程 研究了下。 还有 对异常的处理技巧 , 事件的公布 及 触发(可能有的叫法不同).
自己的感悟是 和JAVA语言 非常的相似。
测试页面只需一句JS就可以调用 很多功能。
此例: 在测试页面加上 Ext.onReady(function(){new ViewGrid();}); 即可

以下是 模板的代码:
欢迎各位 投蛋 ,意见.
ViewGrid = Ext.extend(Ext.grid.GridPanel,{
insertWin:null,
updateWin:null,
constructor:function(){
this.insertWin = new InsertWindowInfo();
this.updateWin = new UpdateWindowInfo();
ViewGrid.superclass.constructor.call(this,{
title:'GridPanel',
  renderTo:Ext.getBody(),
  width:320,
  height:200,
  tbar:[{
  text:'添加人员',
  handler:function(){
  this.insertWin.show();
  },scope:this
  },'-',{
  text:'修改人员',
  handler:function(){
  this.updateWin.show();
  try{
  var _r = this.getSelected();
  this.updateWin.form.setValues(_r);
  }catch(error){
  Ext.Msg.alert(error.description);
  this.updateWin.close();
  }
  },
  scope:this
  },'-',{
  text:'删除人员',
  handler:this.deleteEmp,
  scope:this
  }],
  colModel:new Ext.grid.ColumnModel([{
  header:'姓名'
  },{
  header:'性别'
  },{
  header:'年龄'
  }]),
  store:new Ext.data.JsonStore({
  autoLoad:true,
  data:[{name:'张翔',sex:'男',age:22},{name:'李慧敏',sex:'女',age:21}],
  fields:['name','sex','age']
    }),
  selModel:new Ext.grid.RowSelectionModel({
  singleSelect:true,
  listeners:{
  'rowselect':{
  fn:function(_sel,_index,_r){
  this.fireEvent('rowselect',_r);
  },
  scope:this
  }
  }
  })
});
this.addEvents('rowselect');
this.insertWin.on('submit',this.onInsertWinSubmit,this);
this.updateWin.on('submit',this.onUpdateWinSubmit,this);
},
insertRecord:function(_r){
this.store.add(_r);
},
updateRecord:function(_r){
try{
var _nr = this.getSelected();
var _data = _r.data;
for(var i in _data){
_nr.set(i,_data[i]);
}
_nr.commit();
}catch(error){
alert(error.description);
}
},
deleteRecord:function(_r){
this.getStore().remove(_r);
},
onInsertWinSubmit:function(_win,_r){
this.insertRecord(_r);
},
getSelected:function(){
var sm = this.getSelectionModel();
if(sm.getCount() == 0)throw Error("请选择一条记录");
else return sm.getSelected();
},
onUpdateWinSubmit:function(_win,_r){
this.updateRecord(_r);
},
deleteEmp:function(_r){
try{
this.deleteRecord(this.getSelected());
}catch(error){
Ext.MessageBox.alert('系统提示','请选择一条记录');
}
}
});

//---------------------------------------------------------------------------------------------------------
FormInfo = new Ext.extend(Ext.form.FormPanel,{
constructor:function(){
FormInfo.superclass.constructor.call(this,{
frame:true,
defaultType:'textfield',
labelWidth:35,
//baseCls:'x-plain',
defaults:{'anchor':'95%'},
plain:true,
items:[{
fieldLabel:'姓名',
name:'name'
},{
fieldLabel:'年龄',
vtype:'age',
name:'age'
},{
fieldLabel:'性别',
name:'sex',
readonly:true,
xtype:'combo',
displayField:'sex',
mode:'local',
triggerAction:'all',
value:'男',
store:new Ext.data.ArrayStore({
  fields:['sex'],
  data:[['男'],['女']]
  })
}]
});
},
getValues:function(){
if(this.getForm().isValid())
return new Ext.data.Record(this.getForm().getValues());
else
throw Error('没有通过验证');
},
setValues:function(_r){
this.getForm().loadRecord(_r);
},
reset:function(){
this.getForm().reset();
}
});

//-------------------------------------------------------------------------------------------------------------
WindowInfo =Ext.extend(Ext.Window,{
form:null,
constructor:function(){
this.form = new FormInfo();
WindowInfo.superclass.constructor.call(this,{
renderTo:Ext.getBody(),
width:300,
height:150,
plain:true,
items:this.form,
buttons:[{
text:'确定',
handler:this.onWindowSubmit,
scope:this
},{
text:'取消',
handler:this.onWindowCancel,
scope:this
}]
});
this.addEvents("submit");
},
close:function(){
this.form.reset();
this.hide();
},
onWindowSubmit:function(){
try{
this.fireEvent('submit',this,this.form.getValues());
}catch(error){
return ;
}
this.form.reset();
this.hide();
},
onWindowCancel:function(){
this.form.reset();
this.hide();
}
});
//-------------------------------------------------------------------------------------------------------
InsertWindowInfo = Ext.extend(WindowInfo,{
title:'添加人员'
});
//-------------------------------------------------------------------------------------------------------

UpdateWindowInfo = Ext.extend(WindowInfo,{
title:'修改人员'
});
  • 大小: 4.4 KB
  • 大小: 8.7 KB
0
0
分享到:
评论

相关推荐

    Ext API详解--笔记

    `EXT核心API详解(一) - Ext类.txt`介绍了Ext的基础类,包括`Ext.util.Observable`(观察者模式的实现)、`Ext.app.Application`(管理应用生命周期)等。理解这些类的用法对于构建可维护的应用至关重要。 4. **Ext...

    EXT 自定义控件扩展

    1. **类继承**:EXT支持基于面向对象的编程,自定义控件通常通过继承EXT现有的基础控件类来实现。例如,如果你想要创建一个自定义的按钮,你可以从`Ext.button.Button`类开始,然后添加你自己的方法和属性。 2. **...

    EXT4.0 SDK 正式版

    - **头文件**:如`<linux/ext4.h>`,提供编程接口,供开发者在应用程序或内核模块中调用EXT4的相关函数。 - **库文件**:动态链接库或静态链接库,用于在程序中链接EXT4功能。 - **实用工具**:如`mke2fs`用于格式化...

    ajax-ext框架

    1. **模块化开发**:利用AMD(Asynchronous Module Definition)或CommonJS规范进行模块化组织代码,提高代码的可维护性。 2. **优化性能**:避免无谓的Ajax请求,合理使用缓存,优化数据传输和DOM操作。 3. **...

    ext 图书管理系统

    10. **可扩展性**:EXT的模块化架构允许开发者轻松添加新功能或扩展现有功能,如集成图书推荐系统、在线阅读等。 综上所述,EXT图书管理系统利用EXT的强大功能,为图书馆或个人提供了全面、直观且易于使用的图书...

    ThinkPHP+Ext学生信息管理系统示例

    在信息化管理领域,高效的学生信息管理系统是不可或缺的工具,本示例系统——“ThinkPHP+Ext学生信息管理系统”便是基于这一需求而构建的。该系统采用ThinkPHP框架结合Ext前端组件库,旨在提供一个稳定、易用且功能...

    ext3 中文api

    通过深入学习EXT3中文API文档,开发者能够更有效地编写和维护与EXT3文件系统相关的应用程序,尤其是在系统级编程、文件管理工具开发以及Linux内核模块开发等领域。同时,了解EXT3的API也有助于理解其他文件系统的...

    Ext一些方法的重写

    在JavaScript这种没有类的语言中,`Ext.extend()` 提供了面向对象编程的模拟。当我们想要自定义一个新类,并希望它继承自另一个已有类时,可以使用这个方法。以下是一个基本的使用示例: ```javascript Ext.extend...

    Ext2.2 中文手册

    - **源码结构**:Ext 框架的源码分为多个模块,每个模块负责特定的功能,例如 Core 模块包含了基础的 JavaScript 功能。 - **作用域管理**:JavaScript 中的作用域决定了变量的可见性。在 Ext 中,正确管理作用域...

    Ext学生信息系统(Spring+Struts2+ExtJs)

    Spring的IoC容器使开发者能轻松地配置和管理对象,而AOP则用于实现如日志记录、事务管理等功能,确保代码的模块化和可维护性。 2. **Struts2框架**: Struts2是一个基于MVC设计模式的Web应用框架,用于简化Java EE...

    Ext3 日期范围插件

    这种日期范围插件可能是作为Ext3文件系统的一部分,通过模块化的方式添加到内核中的。 5. **配置与管理**:安装和配置这样的插件可能涉及到编译内核模块、修改系统配置文件以及使用特定的命令行工具来设定日期范围...

    ext继承重写

    在EXT JS这个强大的JavaScript框架中,"继承"和"重写"是两个核心概念,它们在构建可复用和模块化的应用程序中起着至关重要的作用。EXT JS采用面向对象的编程方式,允许开发者通过继承机制来扩展类的功能,同时通过...

    EXT开发文档

    - 继承使得代码更加模块化,易于维护。 13. **补充资料**: - **EXT** 官方文档提供了丰富的资源,包括教程、API 文档等,可以帮助开发者深入了解 **EXT** 的各个部分。 - 学习 **EXT 2** 的新特性也是很有帮助...

    ext-word文档

    ### EXT中文手册与ExtJS基础知识概览 #### EXT简介 ExtJS是一款强大的开源JavaScript框架,专为Web应用程序的开发而设计。它提供了丰富的用户界面组件和工具,支持开发者快速构建高性能、可定制化的Web应用。ExtJS...

    ext PPT

    Observable类提供了添加、移除和管理事件监听器的接口,使得EXT组件具有高度的可扩展性和模块化。理解Observable机制对于编写可复用和可维护的EXT组件至关重要。 4. **ExtJSDomNavigation.ppt** 在这部分,你将...

    ext-2.0.2源代码

    4. **事件驱动**:EXT采用事件驱动模型,组件间的交互通过触发和监听事件来实现,这增加了代码的模块性和可维护性。 5. **AJAX支持**:EXT内建了对AJAX的支持,可以轻松实现异步数据请求,提升用户体验。 6. **...

    GWTAPI文档 + GWTEXT文档 + GWTEXTUX文档

    1. **模块系统**:GWT项目基于模块化结构,每个模块对应一个.gwt.xml配置文件,定义了模块的依赖和编译选项。 2. **编译过程**:GWT将Java代码转换为优化的JavaScript,这涉及到类型安全的编译和优化,以确保在...

    Ext继承和扩展

    这对于实现模块化和代码复用非常有用。 ### 总结 `Ext`的继承和扩展机制极大地丰富了JavaScript的面向对象编程能力,使得开发者能够构建复杂的组件和应用。通过`Ext.extend()`、`Ext.create()`、配置对象以及组合和...

    Ext江湖 完整版

    - **模块化设计**:Ext4引入了模块化架构,使得开发过程更加灵活。 - **性能优化**:通过对DOM操作、事件处理等方面的改进,提高了框架的整体性能。 - **增强的功能**:增加了新的UI组件和API,提供更多功能支持。 ...

Global site tag (gtag.js) - Google Analytics