我找了没有全局变量,也没有重复id(不过关于gridpanel里边的id拿不准) 请指教
Morik.Office.GzxxglPanel= function(config) {
Morik.Office.GzxxglPanel.superclass.constructor.call(this, config);
//Morik.Office.GzxxglPanel.superclass.constructor.call(this,{id:"gzxxGl",title:"故障信息管理",closable:false,closeAction:'hide' });
var thisServlet="gzxx.myaction";
var pagesize=10;
var stuwinTitle='故障信息管理';
var masGrid;
var mySbpartid=Morik.Office.sbpartid;
var mySbpartmc=Morik.Office.sbpartmc;
var treeXh="g";
function getSbpid(id){
return treeXh+"a"+id;
}
var StudentFormPanel = function() {/**$$$$$ */
var chiForm=this;
this.idTextField = {
// xtype : 'hidden',
xtype : 'textfield',
fieldLabel : "序号",
readOnly : true,
hidden:true,
hideLabel:true,
name : "id"
};
this.nameTextField = {
xtype : 'textfield',
fieldLabel : "故障名",
allowBlank : false,
maxLength:20,
minLength:1,
name : "name"
};
this.faulttimeTextField = {
xtype : 'numberfield',
fieldLabel : "所需时间",
allowBlank : false,
name : "faulttime"
};
this.faultscoreTextField = {
xtype : 'numberfield',
fieldLabel : "绩分",
allowBlank : false,
name : "faultscore"
};
this.typeidTextField = {
xtype : 'hidden',
fieldLabel : "所属分类序号",
labelAlign :'right' ,
readOnly : true,
name : "typeid"
};
this.typemctTextField = {
xtype: 'combo',
fieldLabel: '类别名称',//所属分类名称'
name: 'typemct',
store: new Ext.data.SimpleStore({fields:[],data:[[]]}),
mode: 'local',
resizable:true,
height:500,
allowBlank : false,
autoScroll:false,
triggerAction:'all',
tpl: '<tpl for="."><div id="treeg"></div></tpl>',
displayField: 'key',
valueField: 'value',
listeners:{
expand:function(combo ){
var mycombotree=this;
this.tree = new Ext.tree.TreePanel({
height:600,
autoWidth:true,
loader: new Ext.tree.TreeLoader({dataUrl:'tree.myaction?method=lbTreeLb2&txh='+treeXh+'&pid='+getSbpid(mySbpartid)})
});
this.root = new Ext.tree.AsyncTreeNode({
text: mySbpartmc,
draggable:false,
id:getSbpid(mySbpartid)
});
this.tree.setRootNode(mycombotree.root);
//根据点击的节点加载该节点下的数据,点击哪个节点就加载哪个节点的数据
this.tree.on('beforeload',function(node){
if(node.id != getSbpid(mySbpartid)){
mycombotree.tree.loader.dataUrl = 'tree.myaction?method=lbTreeLb2&txh='+treeXh+'&pid='+node.id;
}
});
//监听下拉树的节点单击事件
this.tree.on('click', function(node){
if(node.leaf==true){
chiForm.getForm().findField('typeid').setValue(node.id);
mycombotree.setRawValue(node.text);
mycombotree.collapse();
}
});
this.tree.render('treeg');
this.tree.root.expand();
}
},
editable : false,
emptyText: '请选择...',
hiddenName:'typemc'
};
StudentFormPanel.superclass.constructor.call(this, {
bodyStyle : 'padding:5px 5px 0',
frame : true,
reader : new Ext.data.JsonReader( {
root : 'list',
successProperty : 'success',
totalProperty : 'totalSize',
id : 'id'
}, ['id', 'name', 'faulttime', 'faultscore', 'typeid','typemc']),/**$$$$$ */
items : [this.idTextField, this.nameTextField, this.faulttimeTextField, this.faultscoreTextField, this.typeidTextField, this.typemctTextField]
});
}
Ext.extend(StudentFormPanel, Ext.form.FormPanel, {
loadData : function(id) {
var url = thisServlet + '?method=edit&id=' + id;/**$$$$$ */
this.getForm().load( {
url : url,
waitMsg : 'Loading',
failure : function(form, action) {
var json = action.response.responseText;
var o = eval("(" + json + ")");
Ext.MessageBox.show( {
title : 'Error',
msg : o.message,
buttons : Ext.MessageBox.OK,
icon : Ext.MessageBox.ERROR
});
}
});
}
});var StudentWindow = function() {
var _win = this;
this.formPanel = new StudentFormPanel();
var _form = this.formPanel.getForm();
StudentWindow.superclass.constructor.call(this, {
title : stuwinTitle,
width : 520,
height : 300,
resizable : true,
plain : false,
border : false,
modal : true,
autoScroll : true,
layout : 'fit',
closeAction : 'hide',
items : this.formPanel,
buttons : [ {
text : '保存',
handler : function() { _form.errorReader = new Ext.data.JsonReader( {
successProperty : 'success',
root : 'list',
id : 'id'
}, ['id', 'name', 'faulttime', 'faultscore', 'typeid','typemc']);/**$$$$$ */ if (_form.isValid()) {
_form.submit( {
waitMsg : 'wait...',
url : thisServlet + '?method=save&lbTree=t',
failure : function(form, action) {
var json = action.response.responseText;
var o = eval("(" + json + ")");
Ext.MessageBox.show( {
title : 'Error',
msg : o.message,
buttons : Ext.MessageBox.OK,
icon : Ext.MessageBox.ERROR
});
},
success : function(form1, action) {
var data = action.result.errors[0];
if (_win.record) {
_win.record.data = data;
_win.record.reject();
_win.hide();
} else {
_win.record = new Ext.data.Record(data)
}
_form.loadRecord(_win.record);
}
});
}
}
}, {
text : '关闭',
handler : function() {
_win.hide();
},
tooltip : 'Close the window'
}]
});
}
Ext.extend(StudentWindow, Ext.Window, {
loadData : function(id) {
this.formPanel.loadData(id);
}
});
Morik.Office.GzxxglPanel= function(config) {
Morik.Office.GzxxglPanel.superclass.constructor.call(this, config);
//Morik.Office.GzxxglPanel.superclass.constructor.call(this,{id:"gzxxGl",title:"故障信息管理",closable:false,closeAction:'hide' });
var thisServlet="gzxx.myaction";
var pagesize=10;
var stuwinTitle='故障信息管理';
var masGrid;
var mySbpartid=Morik.Office.sbpartid;
var mySbpartmc=Morik.Office.sbpartmc;
var treeXh="g";
function getSbpid(id){
return treeXh+"a"+id;
}
var StudentFormPanel = function() {/**$$$$$ */
var chiForm=this;
this.idTextField = {
// xtype : 'hidden',
xtype : 'textfield',
fieldLabel : "序号",
readOnly : true,
hidden:true,
hideLabel:true,
name : "id"
};
this.nameTextField = {
xtype : 'textfield',
fieldLabel : "故障名",
allowBlank : false,
maxLength:20,
minLength:1,
name : "name"
};
this.faulttimeTextField = {
xtype : 'numberfield',
fieldLabel : "所需时间",
allowBlank : false,
name : "faulttime"
};
this.faultscoreTextField = {
xtype : 'numberfield',
fieldLabel : "绩分",
allowBlank : false,
name : "faultscore"
};
this.typeidTextField = {
xtype : 'hidden',
fieldLabel : "所属分类序号",
labelAlign :'right' ,
readOnly : true,
name : "typeid"
};
this.typemctTextField = {
xtype: 'combo',
fieldLabel: '类别名称',//所属分类名称'
name: 'typemct',
store: new Ext.data.SimpleStore({fields:[],data:[[]]}),
mode: 'local',
resizable:true,
height:500,
allowBlank : false,
autoScroll:false,
triggerAction:'all',
tpl: '<tpl for="."><div id="treeg"></div></tpl>',
displayField: 'key',
valueField: 'value',
listeners:{
expand:function(combo ){
var mycombotree=this;
this.tree = new Ext.tree.TreePanel({
height:600,
autoWidth:true,
loader: new Ext.tree.TreeLoader({dataUrl:'tree.myaction?method=lbTreeLb2&txh='+treeXh+'&pid='+getSbpid(mySbpartid)})
});
this.root = new Ext.tree.AsyncTreeNode({
text: mySbpartmc,
draggable:false,
id:getSbpid(mySbpartid)
});
this.tree.setRootNode(mycombotree.root);
//根据点击的节点加载该节点下的数据,点击哪个节点就加载哪个节点的数据
this.tree.on('beforeload',function(node){
if(node.id != getSbpid(mySbpartid)){
mycombotree.tree.loader.dataUrl = 'tree.myaction?method=lbTreeLb2&txh='+treeXh+'&pid='+node.id;
}
});
//监听下拉树的节点单击事件
this.tree.on('click', function(node){
if(node.leaf==true){
chiForm.getForm().findField('typeid').setValue(node.id);
mycombotree.setRawValue(node.text);
mycombotree.collapse();
}
});
this.tree.render('treeg');
this.tree.root.expand();
}
},
editable : false,
emptyText: '请选择...',
hiddenName:'typemc'
};
StudentFormPanel.superclass.constructor.call(this, {
bodyStyle : 'padding:5px 5px 0',
frame : true,
reader : new Ext.data.JsonReader( {
root : 'list',
successProperty : 'success',
totalProperty : 'totalSize',
id : 'id'
}, ['id', 'name', 'faulttime', 'faultscore', 'typeid','typemc']),/**$$$$$ */
items : [this.idTextField, this.nameTextField, this.faulttimeTextField, this.faultscoreTextField, this.typeidTextField, this.typemctTextField]
});
}
Ext.extend(StudentFormPanel, Ext.form.FormPanel, {
loadData : function(id) {
var url = thisServlet + '?method=edit&id=' + id;/**$$$$$ */
this.getForm().load( {
url : url,
waitMsg : 'Loading',
failure : function(form, action) {
var json = action.response.responseText;
var o = eval("(" + json + ")");
Ext.MessageBox.show( {
title : 'Error',
msg : o.message,
buttons : Ext.MessageBox.OK,
icon : Ext.MessageBox.ERROR
});
}
});
}
});var StudentWindow = function() {
var _win = this;
this.formPanel = new StudentFormPanel();
var _form = this.formPanel.getForm();
StudentWindow.superclass.constructor.call(this, {
title : stuwinTitle,
width : 520,
height : 300,
resizable : true,
plain : false,
border : false,
modal : true,
autoScroll : true,
layout : 'fit',
closeAction : 'hide',
items : this.formPanel,
buttons : [ {
text : '保存',
handler : function() { _form.errorReader = new Ext.data.JsonReader( {
successProperty : 'success',
root : 'list',
id : 'id'
}, ['id', 'name', 'faulttime', 'faultscore', 'typeid','typemc']);/**$$$$$ */ if (_form.isValid()) {
_form.submit( {
waitMsg : 'wait...',
url : thisServlet + '?method=save&lbTree=t',
failure : function(form, action) {
var json = action.response.responseText;
var o = eval("(" + json + ")");
Ext.MessageBox.show( {
title : 'Error',
msg : o.message,
buttons : Ext.MessageBox.OK,
icon : Ext.MessageBox.ERROR
});
},
success : function(form1, action) {
var data = action.result.errors[0];
if (_win.record) {
_win.record.data = data;
_win.record.reject();
_win.hide();
} else {
_win.record = new Ext.data.Record(data)
}
_form.loadRecord(_win.record);
}
});
}
}
}, {
text : '关闭',
handler : function() {
_win.hide();
},
tooltip : 'Close the window'
}]
});
}
Ext.extend(StudentWindow, Ext.Window, {
loadData : function(id) {
this.formPanel.loadData(id);
}
});
var stuWindow = new StudentWindow();
var _grid = this;
masGrid=this;
var recordType = Ext.data.Record.create([ {/**$$$$$ */
name : 'id',
type : 'int',
mapping : 'id'
}, {
name : 'name',
type : 'string',
mapping : 'name'
}, {
name : 'faulttime',
type : 'float',
mapping : 'faulttime'
}, {
name : 'faultscore',
type : 'float',
mapping : 'faultscore'
}, {
name : 'typeid',
type : 'int',
mapping : 'typeid'
},{name : 'typemc',
type : 'string',
mapping : 'typemc'
}]);
this.store = new Ext.data.Store( {
proxy : new Ext.data.HttpProxy( {
url : thisServlet + '?method=list'
}), reader : new Ext.data.JsonReader( {
root : 'list',
totalProperty : 'totalSize',
id : 'id'
}, recordType)
});
this.store.load({params:{start:0,limit:pagesize}});
var sm = new Ext.grid.CheckboxSelectionModel( {
singleSelect : false
});
this.columns = [new Ext.grid.RowNumberer(), {/**$$$$$ */
id : 'id',
header : "序号",
width : 20,
sortable : true,
dataIndex : 'id'
}, {
header : "故障名",
width : 75,
sortable : true,
dataIndex : 'name'
}, {
header : "所需时间",
width : 50,
sortable : true,
dataIndex : 'faulttime'
}, {
header : "绩分",
width : 50,
sortable : true,
dataIndex : 'faultscore'
}, {
header : "类别序号",//所属类别序号
width : 30,
dataIndex : 'typeid',hideable:false,sortable:false,resizable:true,hidden:false
},{header : "类别名称",//所属类别名称
width : 75,
sortable : true,
dataIndex : 'typemc'
}, sm]; var deleteFormDiv = Ext.DomHelper.insertHtml('afterEnd', document.body,
'<div id="' + Ext.id() + '" style="visibility: hidden;"> </div>'); var deleteForm = new Ext.form.FormPanel( {
items : {}
}); deleteForm.render(deleteFormDiv);
deleteForm.getForm().errorReader = new Ext.data.JsonReader( {
successProperty : 'success'
}, ['id', 'name', 'faulttime', 'faultscore', 'typeid','typemc']);/**$$$$$ */
StudentGridPanel.superclass.constructor
.call(
this,
{
layout : 'fit',
sm : sm,
loadMask:true, //读取数据时的遮罩和提示功能,默认为false
viewConfig : {
emptyText : "sorry,没有数据",
forceFit : true,
enableRowBody : true,
getRowClass :function(record, rowIndex, p, ds) {
var cls = 'white-row';
var colorI=rowIndex%3;
switch (colorI) {
case 0 :
cls = 'yellow-row'
break;
case 1 :
cls = 'green-row'
break;
case 2 :
cls = 'red-row'
break;
}
return cls;
}
},
bbar : new Ext.PagingToolbar( {
pageSize : pagesize,
store : this.store,
beforePageText:"第",
afterPageText:"页,共{0}页",
lastText:"尾页",
nextText :"下一页",
prevText :"上一页",
firstText :"首页",
refreshText:"刷新页面",
displayInfo: true,
displayMsg:"当前显示 {0} - {1}条, 共 {2}条",
emptyMsg: "没有记录"
}),
tbar : [
{
text : '增加',
icon:'pic/sizeplus.gif',
handler : function() {
var data = {};
var record = new Ext.data.Record(data);
_grid.store.insert(0, record);
stuWindow.record = record;
stuWindow.formPanel.getForm().reset();
stuWindow.show();
stuWindow.formPanel.getForm().loadRecord(record);
}
},
'-',
{
text : '删除',
icon:'pic/sizeminus.gif',
handler : function() {
var records = _grid.getSelections();
if (records) {
Ext.MessageBox
.confirm(
'确认',
'确定要删除所选记录?',
function(btn) {
if (btn == 'yes') {
var ids = "";
for (var i = 0; i < records.length; i++) {
var record = records[i];
if (record.data.id) {
ids += record.data.id+ ',';
} else {
_grid.store
.remove(record);
}
}
deleteForm
.getForm()
.submit( {
waitMsg : 'wait...',
url : thisServlet + '?method=delete&ids='+ids,
failure : function(
form,
action) {
var json = action.response.responseText;
var o = eval("("
+ json
+ ")");
Ext.MessageBox
.show( {
title : 'Error',
msg : o.message,
buttons : Ext.MessageBox.OK,
icon : Ext.MessageBox.ERROR
});
},
success : function(
form1,
action) {
_grid.store.load({params:{start:0,limit:pagesize}});
// _grid.store
// .load();
}
});
}
});
}
}
}, '-', {
text : '修改',
icon:'pic/redo.gif',
handler : function() {
var record = _grid.getSelected();
if (record != null) {
stuWindow.show();
var record = _grid.getSelected();
stuWindow.record = record;
stuWindow.formPanel.getForm().loadRecord(record);
}
}
}]
});
}Ext.extend(StudentGridPanel, Ext.grid.GridPanel, {
// width : 660,
height : 310,
// stripeRows : true, //True表示使用不同颜色间隔行,默认为false.
// loadMask:true, //读取数据时的遮罩和提示功能,默认为false getSelected : function() {
var record = this.getSelectionModel().getSelected();
if (record == null) {
Ext.MessageBox.show( {
title : '提示',
msg : "请选择记录",
buttons : Ext.MessageBox.OK,
icon : Ext.MessageBox.INFO
});
} else {
return record;
}
},
getSelections : function() {
var records = this.getSelectionModel().getSelections();
if (records.length < 1) {
Ext.MessageBox.show( {
title : '提示',
msg : "请选择记录",
buttons : Ext.MessageBox.OK,
icon : Ext.MessageBox.INFO
});
} else {
return records
}
}
});
// this.add( setTform);
this.add(new StudentGridPanel());
}Ext.extend(Morik.Office.GzxxglPanel, Ext.Panel, {});/**$$$$$ */
expand : function(combo)
{
var mycombotree = this;
this.tree = new Ext.tree.TreePanel({
height : 600,
autoWidth : true,
loader : new Ext.tree.TreeLoader({
dataUrl : 'tree.myaction?method=lbTreeLb2&txh='
+ treeXh + '&pid=' + getSbpid(mySbpartid)
})
});
this.root = new Ext.tree.AsyncTreeNode({
text : mySbpartmc,
draggable : false,
id : getSbpid(mySbpartid)
});
this.tree.setRootNode(mycombotree.root);
// 根据点击的节点加载该节点下的数据,点击哪个节点就加载哪个节点的数据
this.tree.on('beforeload', function(node)
{
if (node.id != getSbpid(mySbpartid))
{
mycombotree.tree.loader.dataUrl = 'tree.myaction?method=lbTreeLb2&txh='
+ treeXh + '&pid=' + node.id;
}
});
// 监听下拉树的节点单击事件
this.tree.on('click', function(node)
{
if (node.leaf == true)
{
chiForm.getForm().findField('typeid')
.setValue(node.id);
mycombotree.setRawValue(node.text);
mycombotree.collapse();
}
}); this.tree.render('treeg');
this.tree.root.expand();
}
一、grid加个事件销毁grid前先销毁弹出窗体
二、把树的定义到移到下拉框外边。