哪位大侠帮我看看这段程序:从主程序进入本窗口调用这段程序,第一次能打开下拉树(this.typemctTextField)表现正常,关掉窗口,
从主程序重新打开本窗口就打不开下拉树了。可firebug中关于下拉树的数据从后台传前台正常
(loader: new Ext.tree.TreeLoader({dataUrl:'tree.myaction?method=lbTreeLb2&pid='+getSbpid(mySbpartid)}))。哪位给个诊断?
function getSbpid(id){
return "a"+id;
}
var chiForm
var StudentFormPanel = function() {/**$$$$$ */
chiForm=this;
this.typeidTextField = {
xtype : 'hidden',
//xtype : 'textfield',
//width : Height1,
fieldLabel : "所属分类序号",
labelAlign :'right' ,
readOnly : true,
//editable : true,
name : "typeid"
};
var mycombotree;
this.typemctTextField = {
xtype: 'combo',
fieldLabel: '类别名称',//所属分类名称'
name: 'typemct',
store: new Ext.data.SimpleStore({fields:[],data:[[]]}),
mode: 'local',
resizable:true,
height:500,
//width : Height1,
autoScroll:false,
triggerAction:'all',
tpl: '<tpl for="."><div id="tree1"></div></tpl>',
displayField: 'key',
valueField: 'value',
listeners:{
expand:function(combo ){
mycombotree=this;
tree.render('tree1');
tree.root.expand();
}
},
editable : false,
emptyText: '请选择...',
hiddenName:'typemc'
};
tree = new Ext.tree.TreePanel({
//el:'tree-div',
height:600,
//autoHeight:true,
autoWidth:true,
loader: new Ext.tree.TreeLoader({dataUrl:'tree.myaction?method=lbTreeLb2&pid='+getSbpid(mySbpartid)})
});
var root=new Array();
root = new Ext.tree.AsyncTreeNode({
//text: setTform.getForm().findField('sbpartid').getRawValue(),
text: mySbpartmc,
draggable:false,
id:getSbpid(mySbpartid)
});
tree.setRootNode(root);
//根据点击的节点加载该节点下的数据,点击哪个节点就加载哪个节点的数据
tree.on('beforeload',function(node){
if(node.id != getSbpid(mySbpartid)){
tree.loader.dataUrl = 'tree.myaction?method=lbTreeLb2&pid='+node.id;
}
});
//监听下拉树的节点单击事件
tree.on('click', function(node){
if(node.leaf==true){
//var _form=chiForm.getForm();
chiForm.getForm().findField('typeid').setValue(node.id);
mycombotree.setRawValue(node.text);
//mycombotree.setRawValue(node.id);
mycombotree.collapse();
}
});
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.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
});
}
});
}
});
从主程序重新打开本窗口就打不开下拉树了。可firebug中关于下拉树的数据从后台传前台正常
(loader: new Ext.tree.TreeLoader({dataUrl:'tree.myaction?method=lbTreeLb2&pid='+getSbpid(mySbpartid)}))。哪位给个诊断?
function getSbpid(id){
return "a"+id;
}
var chiForm
var StudentFormPanel = function() {/**$$$$$ */
chiForm=this;
this.typeidTextField = {
xtype : 'hidden',
//xtype : 'textfield',
//width : Height1,
fieldLabel : "所属分类序号",
labelAlign :'right' ,
readOnly : true,
//editable : true,
name : "typeid"
};
var mycombotree;
this.typemctTextField = {
xtype: 'combo',
fieldLabel: '类别名称',//所属分类名称'
name: 'typemct',
store: new Ext.data.SimpleStore({fields:[],data:[[]]}),
mode: 'local',
resizable:true,
height:500,
//width : Height1,
autoScroll:false,
triggerAction:'all',
tpl: '<tpl for="."><div id="tree1"></div></tpl>',
displayField: 'key',
valueField: 'value',
listeners:{
expand:function(combo ){
mycombotree=this;
tree.render('tree1');
tree.root.expand();
}
},
editable : false,
emptyText: '请选择...',
hiddenName:'typemc'
};
tree = new Ext.tree.TreePanel({
//el:'tree-div',
height:600,
//autoHeight:true,
autoWidth:true,
loader: new Ext.tree.TreeLoader({dataUrl:'tree.myaction?method=lbTreeLb2&pid='+getSbpid(mySbpartid)})
});
var root=new Array();
root = new Ext.tree.AsyncTreeNode({
//text: setTform.getForm().findField('sbpartid').getRawValue(),
text: mySbpartmc,
draggable:false,
id:getSbpid(mySbpartid)
});
tree.setRootNode(root);
//根据点击的节点加载该节点下的数据,点击哪个节点就加载哪个节点的数据
tree.on('beforeload',function(node){
if(node.id != getSbpid(mySbpartid)){
tree.loader.dataUrl = 'tree.myaction?method=lbTreeLb2&pid='+node.id;
}
});
//监听下拉树的节点单击事件
tree.on('click', function(node){
if(node.leaf==true){
//var _form=chiForm.getForm();
chiForm.getForm().findField('typeid').setValue(node.id);
mycombotree.setRawValue(node.text);
//mycombotree.setRawValue(node.id);
mycombotree.collapse();
}
});
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.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
});
}
});
}
});
1、 但是mySbpartid这个变量在哪定义的?
2、tpl: '<tpl for="."><div id="tree1"></div></tpl>',
去掉标红的
3、最好晒下你在主接口调用该段代码的地方的代码?
Morik.Office.GzxxglPanel= function(config) {
Morik.Office.GzxxglPanel.superclass.constructor.call(this, config);
var thisServlet="gzxx.myaction";
var pagesize=10;
var stuwinTitle='故障信息管理';
var masGrid;
var mySbpartid=Morik.Office.sbpartid;
var mySbpartmc=Morik.Office.sbpartmc;
function getSbpid(id){
return "a"+id;
}
var chiForm
var StudentFormPanel = function() {/**$$$$$ */
chiForm=this;
this.idTextField = {
// xtype : 'hidden',
xtype : 'textfield',
fieldLabel : "序号",
readOnly : 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',
//xtype : 'textfield',
//width : Height1,
fieldLabel : "所属分类序号",
labelAlign :'right' ,
readOnly : true,
//editable : true,
name : "typeid"
};
var mycombotree;
this.typemctTextField = {
xtype: 'combo',
fieldLabel: '类别名称',//所属分类名称'
name: 'typemct',
store: new Ext.data.SimpleStore({fields:[],data:[[]]}),
mode: 'local',
resizable:true,
height:500,
//width : Height1,
autoScroll:false,
triggerAction:'all',
tpl: '<tpl for="."><div id="tree1"></div></tpl>',
displayField: 'key',
valueField: 'value',
listeners:{
expand:function(combo ){
mycombotree=this;
tree.render('tree1');
tree.root.expand();
}
},
editable : false,
emptyText: '请选择...',
hiddenName:'typemc'
};
tree = new Ext.tree.TreePanel({
//el:'tree-div',
height:600,
//autoHeight:true,
autoWidth:true,
loader: new Ext.tree.TreeLoader({dataUrl:'tree.myaction?method=lbTreeLb2&pid='+getSbpid(mySbpartid)})
});
var root=new Array();
root = new Ext.tree.AsyncTreeNode({
//text: setTform.getForm().findField('sbpartid').getRawValue(),
text: mySbpartmc,
draggable:false,
id:getSbpid(mySbpartid)
});
tree.setRootNode(root);
//根据点击的节点加载该节点下的数据,点击哪个节点就加载哪个节点的数据
tree.on('beforeload',function(node){
if(node.id != getSbpid(mySbpartid)){
tree.loader.dataUrl = 'tree.myaction?method=lbTreeLb2&pid='+node.id;
}
});
//监听下拉树的节点单击事件
tree.on('click', function(node){
if(node.leaf==true){
//var _form=chiForm.getForm();
chiForm.getForm().findField('typeid').setValue(node.id);
mycombotree.setRawValue(node.text);
//mycombotree.setRawValue(node.id);
mycombotree.collapse();
}
});
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);
}
});
Ext.extend(Morik.Office.GzxxglPanel, Ext.Panel, {});/**$$$$$ */
var StudentGridPanel = function() {
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 : 'student/doGetStudentList.action'
// url : 'sbpart.myaction?method=list'
url : thisServlet + '?method=list'
}), // set up the JsonReader
reader : new Ext.data.JsonReader( {
root : 'list',
totalProperty : 'totalSize',
id : 'id'
}, recordType)
});
this.store.load({params:{start:0,limit:pagesize}});
// this.store.load();
//masGrid.store.load({params:{start:0,limit:pagesize,sbpartid:mySbpartid}});
var sm = new Ext.grid.CheckboxSelectionModel( {
singleSelect : false
});
/* function sbpart(v) {
for(i=0,Count=dsGzsslb.getCount();i<Count;i++)
if(v==dsGzsslb.getAt(i).get('value')) return dsGzsslb.getAt(i).get('text');
//if(v==dsGzsslb.getAt(i).get('value')) return '<span style="color:green;">' +dsGzsslb.getAt(i).get('text')+'</span>';
}
*/
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();
_form.loadRecord(_win.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());
}