最近在写Ext的程序,增加和修改时,打算使用同一个Form,增加和修改的Widow通过hide 和show来控制显示 ,
但是出现了一个问题,在网上查了半天,终于解决了,原来是Form中字段设置了id,把id取消就好了,参考网址
http://topic.csdn.net/u/20100618/11/a09196cc-550b-41e2-9e19-1c331d54aa1c.html
var STUDENT=Ext.data.Record.create([
{name:"sid",type:"string"},
{name:"sname"},
{name:"birthday",type:"string"},//type:"date",dataFormat:"Y-m-d"},
{name:"city",type:"string"},
{name:"stature",type:"int"}
]);
Ext.apply(Ext.form.VTypes, {
LengthLimit: function(v) {
return v.length <=10
},
LengthLimitText: "字符串长度不能大于10",
IntLimit:function(v){
return v <300;
},
IntLimitText:"身高不能大于300"
});
/********************
*表格,显示人员信息,继承自Ext.grid.GridPanel
*
********************/
StudentListGrid=Ext.extend(Ext.grid.GridPanel,{
_store:null,
_tbar:null,
_addWin:null,
_updateWin:null,
constructor:function(){
this._store=new Ext.data.JsonStore({
autoLoad:true,
url : "grid_service.jsp?action=getAllStudents",
root:"rows",
id:"id",
fields:STUDENT,
sortInfo:{field: "sid", direction: "DESC"}
});
this._tbar=new Ext.Toolbar({
id:"mainMenu",
items:["-",
{
text:"增加用户",
id:"addBtn",
iconCls:"adduser",
handler:function(){
this._addWin.show();
this._addWin._form.getForm().reset();
},
scope:this
},"-",
{
text:"修改用户",
id:"updateBtn",
iconCls:"modifyuser",
handler:this.updateFn,
scope:this
},"-",
{
text:"删除用户",
id:"delBtn",
iconCls:"deleteuser",
handler:this.deleteFn,
scope:this
},"-","->",
{
xtype:"textfield",
fieldLabel:"请输入姓名",
id:"searchName",
width:100,
emptyText:"-请输入姓名"
},"-",{
text:"搜索",
width:50,
iconCls:"search",
handler:this.searchFn,
scope:this
},"-"
]
});
this._addWin=new AddNewStudentWindow();
this._updateWin=new UpdateStudentWindow();
StudentListGrid.superclass.constructor.call(this,{
title:"学生列表",
renderTo:Ext.getBody(),
id:"main_grid",
frame:true,
height:300,
width:500,
tbar:this._tbar,
store:this._store,
sm: new Ext.grid.RowSelectionModel({
singleSelect:true
}),
columns:[
{header:"SID",dataIndex:"sid",hidden:true},
{header:"姓名",dataIndex:"sname"},
{header:"生日",dataIndex:"birthday",renderer:this.birthdayFn},
{header:"所在城市",dataIndex:"city"},
{header:"身高",dataIndex:"stature"}
]
});
},
birthdayFn:function(value){
if(typeof(value)=="string")
return value.substring(0,10);
else
return Ext.util.Format.date(value,"Y-m-d");
},
updateFn:function(){
var sm=this.getSelectionModel();
if(sm.getCount() == 0) {
Ext.Msg.show({
title : '注意!',
msg : '请选择需要修改的学生!',
icon : Ext.MessageBox.WARNING,
buttons : Ext.MessageBox.OK
});
return;
}
var _record=sm.getSelected();
if(_record.data.birthday.length>=10)
_record.data.birthday=_record.data.birthday.substring(0,10);
this._updateWin._form.getForm().loadRecord(_record);
this._updateWin.show();
},
deleteFn:function(){
},
searchFn:function(){
}
});
/*******************************************
*增加人员和修改人员时所用到的Form,继承自Ext.form.FormPanel
*
*
****************************************/
StudentFormPanel=Ext.extend(Ext.form.FormPanel,{
constructor:function(){
StudentFormPanel.superclass.constructor.call(this,{
width:340,
frame:true,
plain:true,
layout:"form",
labelWidth:60,
labelAlign:'right',
items:[
{ xtype:"hidden",
fieldLabel:"id",
id:"sid",
value:"",
width:200},
{
xtype:"textfield",
fieldLabel:"姓 名",
vtype:"LengthLimit",
id:"sname",
value:"",
width:200
},
{
xtype:"datefield",
fieldLabel:"生 日",
id:"birthday",
width:200,
format:"Y-m-d",
editable:false,
value:new Date()
},
{
xtype:"textfield",
fieldLabel:"所在城市",
id:"city",
width:200,
value:""
},
{
xtype:"textfield",
fieldLabel:"身 高",
id:"stature",
width:200,
vtype:"IntLimit",
value:""
}
]
});
}
});
/*************************************
*增加用户是的弹出窗口,继承自Ext.Window
*
**************************************/
AddNewStudentWindow=Ext.extend(Ext.Window,{
_form:null,
constructor:function(){
this._form=new StudentFormPanel();//这里新建了FormPanel
AddNewStudentWindow.superclass.constructor.call(this,{
title:"增加用户",
width:350,
frame:true,
plain:true,
closeAction:"hide",
autoDestroy:true,
[color=#FF0000]items:[this._form],[/color]
modal:true,
buttons:[
{text:"保存",
iconCls:"sure",
handler:this.sureFn,
scope:this},
{text:"重置",
iconCls:"reset",
handler:this.resetFn,
scope:this},
{text:"关闭",
iconCls:"close",
handler:this.closeFn,
scope:this}
]
});
},
sureFn:function(){
},
resetFn:function(){
},
closeFn:function(){
this.hide();
}
});
/*****************************
*更新用户时调用的窗口
*
******************************/
UpdateStudentWindow=Ext.extend(Ext.Window,{
_form:null,
constructor:function(){
this._form=new StudentFormPanel();//新建FormPanel
UpdateStudentWindow.superclass.constructor.call(this,{
title:"修改用户",
width:350,
frame:true,
plain:true,
closeAction:"hide",
autoDestroy:true,
[color=#FF0000]items:[this._form],[/color]
modal:true,
buttons:[
{text:"保存",
iconCls:"sure",
handler:this.sureFn,
scope:this},
{text:"重置",
iconCls:"reset",
handler:this.resetFn,
scope:this},
{text:"关闭",
iconCls:"close",
handler:this.closeFn,
scope:this}
]
});
},
sureFn:function(){
},
resetFn:function(){
},
closeFn:function(){
this.hide();
}
});
- 大小: 42.6 KB
- 大小: 47.7 KB
分享到:
相关推荐
在这个特定的例子中,我们关注的是"Ext继承和扩展",这是Ext JS中两个核心的概念,它们对于理解和创建自定义组件至关重要。 1. **Ext继承**: 在面向对象编程中,继承是类之间的一种关系,允许一个类(子类或派生...
-修正了使用IFrameUrl的Tab在切换过程中会重复加载的问题,这是一个在v2.1.6引入的问题(feedback:eroach)。 -修正了启用AutoPostBack的Grid,其RowClick会覆盖LinkButtonField, HyperLinkField, CheckBoxField的...
- **社区支持**:GitHub等开源社区也有许多关于Ext的资源和支持。 #### 3. **Element:Ext的核心** - **概念解释**:`Element`是Ext中一个非常重要的概念,它是对DOM元素的封装,使得操作DOM变得更加简单高效。 - ...
-修正了使用IFrameUrl的Tab在切换过程中会重复加载的问题,这是一个在v2.1.6引入的问题(feedback:eroach)。 -修正了启用AutoPostBack的Grid,其RowClick会覆盖LinkButtonField, HyperLinkField, CheckBoxField的...
`Ext.Panel` 是一个非常常用的容器组件,它可以用来封装一组相关的组件,并提供标题栏、边框等样式。下面是一个简单的 `Ext.Panel` 示例: ```javascript new Ext.Panel({ title: 'Example Panel', width: 400, ...
标题中的"extjsTest"可能是指Ext JS的测试项目或者示例,这是一款基于JavaScript的前端框架,用于构建富客户端应用程序。它提供了丰富的组件库、数据管理、布局管理和可定制的用户界面。描述中的内容重复了标题,...
1. **解耦合**:MVC模式将应用程序分为独立的三个部分,使得修改一个部分不会影响其他部分。 2. **模块化**:每个部分都可以单独开发和测试,有利于团队协作。 3. **复用性**:View和Controller可以复用,降低代码...
ExtJs GridPanel是ExtJs框架中用于展示和管理表格数据的一个重要组件,它提供了丰富的API接口,方便开发者实现复杂的数据操作。根据给出的文件信息,这里将详细解读在ExtJs GridPanel中如何实现基本的增加、删除和...
在UniGUI中使用ADO(ActiveX Data Objects)通常涉及以下几个步骤: - **添加ADO组件**:在Delphi IDE中添加必要的ADO组件。 - **配置连接字符串**:设置正确的数据库连接字符串。 - **编写查询语句**:使用ADO组件...