手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >extjs grid取到数据而不显示的解决
extjs grid取到数据而不显示的解决
摘要:找了快1个小时,就是不知道错误在哪里。。。郁闷我在鼠标左侧点击tree节点,在右侧创建一个标签页,这个已经能够实现,于是我再在新建的标签页里...

找了快1个小时,就是不知道错误在哪里。。。郁闷

我在鼠标左侧点击tree节点,在右侧创建一个标签页,这个已经能够实现,于是我再在新建的标签页里嵌套一个Grid。

奇怪的问题出现了。。

FF和IE下都没报错。但是Grid就是不显示。本来我以为我代码错误。于是我狂找我的代码问题,无意中关掉FF的firbug插件界面,grid就现实出来了。。。原来只要我的窗口发生任何变化Grid才会显示出来。

请问这是我代码问题还是bug?如何解决?

补充一下,我直接在TabPanel里面用items管理grid对象并没问题。但是我用添加事件后在其中管理就出问题了。

文件都是封装在类包里面的。所以只贴关键部分

这是监听事件。

Java代码

listeners:{

'click':function(node, event) {

event.stopEvent();

//把根节点的选择判断去除

if(node.text=="SamPeng" || node.text == "文章管理" || node.text == "产品管理" || node.text == "信息管理" || node.text == "来访管理"){

}else{

var n = main.getComponent(node.id);

if (!n) { //判断是否已经打开该面板

//如果是按的文章列表,新建一个列表对象并且丢进新的标签页

if(node.text == "文章列表"){

var grid=new SamPeng.account.list();

n = main.add({

'id':node.id,

'title':node.text,

items: [{layout:"fit",items:grid}]

});}

}

main.setActiveTab(n);

}

}

listeners:{

'click':function(node, event) {

event.stopEvent();

//把根节点的选择判断去除

if(node.text=="SamPeng" || node.text == "文章管理" || node.text == "产品管理" || node.text == "信息管理" || node.text == "来访管理"){

}else{

var n = main.getComponent(node.id);

if (!n) { //判断是否已经打开该面板

//如果是按的文章列表,新建一个列表对象并且丢进新的标签页

if(node.text == "文章列表"){

var grid=new SamPeng.account.list();

n = main.add({

'id':node.id,

'title':node.text,

items: [{layout:"fit",items:grid}]

});}

}

main.setActiveTab(n);

}

}

然后是我的tab面板创建类

Java代码

* Copyright(c) 2008-2010, SamPeng Inc.

*/

package("SamPeng.panel");

/**

* 作用: 用来创建中间的主显示面板

* 作者:SamPeng

* 时间:2008年9月24日1:24:42

*/

SamPeng.panel.main = function(config){

var config=config || {};

var deconfig={

renderTo:'mainlay',

width:1000,

height:561,

activeTab:0,

plain: true,

border: true,

tabPosition: 'top',

frame: true,

autoScroll: true,

enableTabScroll:true,//超过宽度就自动两边多出滚动条

items:[{

title:"首页"

}

]

}

Ext.applyIf(config,deconfig);

SamPeng.panel.main.superclass.constructor.call(this,config);

}

Ext.extend(SamPeng.panel.main,Ext.TabPanel);

* Copyright(c) 2008-2010, SamPeng Inc.

*/

package("SamPeng.panel");

/**

* 作用: 用来创建中间的主显示面板

* 作者:SamPeng

* 时间:2008年9月24日1:24:42

*/

SamPeng.panel.main = function(config){

var config=config || {};

var deconfig={

renderTo:'mainlay',

width:1000,

height:561,

activeTab:0,

plain: true,

border: true,

tabPosition: 'top',

frame: true,

autoScroll: true,

enableTabScroll:true,//超过宽度就自动两边多出滚动条

items:[{

title:"首页"

}

]

}

Ext.applyIf(config,deconfig);

SamPeng.panel.main.superclass.constructor.call(this,config);

}

Ext.extend(SamPeng.panel.main,Ext.TabPanel);

Grid的就只贴数据源和属性的了。

Java代码

/*******************************************************

* 为表格建立数据源

* 链接后台,并且按每一页的数据列表返回

* 用Json数据格式传递

*******************************************************/

this.dataStore = new Ext.data.Store({

proxy: new Ext.data.HttpProxy({

url: 'php/article_list.php',

disableCaching:false

}),

reader: new Ext.data.JsonReader({

root: 'results',

totalProperty: 'total',

id:'id'

},[

{name: 'id'},

{name: 'name'},

{name: 'typename'},

{name: 'time'},

])

});

this.dataStore.load({params:{start:0, limit:this.myPageSize}});

。。。

。。。省略很多

。。。

/*******************************************************

* 构造编辑列表面板(GridPanel)

*******************************************************/

SamPeng.account.list.superclass.constructor.call(this, {

id: 'list-account-panel',

ds: this.dataStore,

cm: art_cm,

sm: selectBoxModel,

height:500,

tbar: pagingbar,

bbar: menubar,

loadMask: {msg: '读取数据中 ...'},

enableColumnHide: false,

autoScroll:true

//region:'center'

});

Ext.extend(SamPeng.account.list, Ext.grid.GridPanel, {

reload : function() {

this.dataStore.load({params:{start:0, limit:this.myPageSize}});

},

// 调用删除数据

// 服务器通过接受参数返回删除的数据

deleteData : function (jsonData) {

this.dataStore.load({params:{start:0, limit:this.myPageSize, delData:jsonData}});

}

/*******************************************************

* 为表格建立数据源

* 链接后台,并且按每一页的数据列表返回

*用Json数据格式传递

*******************************************************/

this.dataStore = new Ext.data.Store({

proxy: new Ext.data.HttpProxy({

url: 'php/article_list.php',

disableCaching:false

}),

reader: new Ext.data.JsonReader({

root: 'results',

totalProperty: 'total',

id:'id'

},[

{name: 'id'},

{name: 'name'},

{name: 'typename'},

{name: 'time'},

])

});

this.dataStore.load({params:{start:0, limit:this.myPageSize}});

。。。

。。。省略很多

。。。

/*******************************************************

* 构造编辑列表面板(GridPanel)

*******************************************************/

SamPeng.account.list.superclass.constructor.call(this, {

id: 'list-account-panel',

ds: this.dataStore,

cm: art_cm,

sm: selectBoxModel,

height:500,

tbar: pagingbar,

bbar: menubar,

loadMask: {msg: '读取数据中 ...'},

enableColumnHide: false,

autoScroll:true

//region:'center'

});

Ext.extend(SamPeng.account.list, Ext.grid.GridPanel, {

reload : function() {

this.dataStore.load({params:{start:0, limit:this.myPageSize}});

},

// 调用删除数据

// 服务器通过接受参数返回删除的数据

deleteData : function (jsonData) {

this.dataStore.load({params:{start:0, limit:this.myPageSize, delData:jsonData}});

}

谢谢各位大侠了!

问题状况是我浏览器不动,Grid死活不显示,浏览器一变,Grid就出来了。而且是按照我设定的参数大小显示的。不明白倒底问题出在哪里。只有这么多分了。望指教

本来以为是代码有问题,看Firebug没有报错,并且观察Firebug确实从服务端取得了数据。搞了很久没有想出问题,但是什么也不干,把窗口最小化再最大化的时候,数据又出来了!!!

这可能是Extjs的一个Bug,从网上找类似的解决方法,找到了这个:

,后来又和qiuye402大侠进行了沟通终于搞定。

其实就是布局刷新的问题,只需将最外层的容器重新render一下就可以了。最外层的容器一般就是类似于viewport的东东了,刚开始不知道,一直重新render包含grid的panel,没有效果,重新render viewport一切OK了!

【extjs grid取到数据而不显示的解决】相关文章:

Javascript特效:随机显示图片的源代码

js+cookies实现悬浮购物车的方法

js去除字符串里中文与空格的例子

JavaScript获取两个数组交集的方法

JavaScript中for循环的使用详解

javascript改变和控制显示的图片大小

js光标定位文本框回车表单提交问题的解决方法

js常用函数 不错

根据内容自动调整弹出窗口大小的JS解决方案

AngularJS数据源的多种获取方式汇总

精品推荐
分类导航