精华帖 (1) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-26
grid的常见问题: 1, grid数据为空.
具体解决方案如下: 1. grid为空
问题引发的可能原因 (1).是否定义grid的高度, height,autoHeight,或者layout:'fit'的容器 中的一种 grid = new Ext.grid.EditorGridPanel{( //其他configs //不要忘记指定height //三种选择,(1) 显示的指定height,(2)使autoHeight(3)把grid放入一个布局为:fit的容器 //autoHeight: true // autoHeight重新定义高度来显示所有的记录 // -- 或者-- //height: 350 )} (2).是否加载store? 调用方法store.load() (3). 是否render grid, Render a grid使用下面的一种:
(4). render的元素是否存在. (5). 如果把一个grid放入一个tab panel中, 尝试在tabPanel的配置中添加 layoutOnTabChange: true (6). 如果使用JSON,
(7).The render是否正确指定了一个正确的root, JSON中使用该root
(8). 确保一条记录的数据是一个数组中的一条 var SecurityItemRecord = Ext.data.Record.create([{name: 'type'}, {name: 'itemName'}]);//OK var SecurityItemRecord = Ext.data.Record.create({name: 'type'}, {name: 'itemName'});//NO GOOD 尝试使用firebug进行下面操作 (I)firebug是否有错误显示 (II)请求是否发出(查看console) (III)该请求是否收到一个响应, 如果是, 把结果拷贝到www.jslint.com中验证格式, 该响应是否是你想要的结果, 检查总记录数, 数组的根目录, 等等 store load? 添加监听器监测store是否被加载或者有异常( 如何添加监听器? ) Store 'datachanged', 'load', 'loadexception', Proxy 'load' / 'loadexception' 也可以添加ajax监听器
2. grid不能正常的显示图片(checkboxes, 等等) (1), Css文件连接是否正确 (2), css引用是否正确, 检查相对路径.
3. 排序问题 (1). 检查store配置(sortInfo和sort type)或者使用setDefaultSort(); sortInfo:{field: 'fieldname', direction: 'ASC'} //或者调用: store.setDefaultSort('fieldname', 'ASC'); (2). 检查sort type 是否设定 (3). 如果仅仅针对当前页面排序, 同时排列整个DB查询 remoteSort应该设置为: true(remoteSort默认为本地排序) (4). 列排序 列数据 //当前排序 +-+-------+ |1|First | |2|Last | |3|Second| +-+-------+ //希望的排序 +-+-------+ |1|First | |3|Second| |2|Last | 在record定义 sortType: function(value) { switch (value.toLowerCase()) { case 'first': return 1; case 'second': return 2; default: return 3; } }
4. Tab Panels中的grid (1). 象其他Panel一样, 你可以直接添加一个GridPanle作为一个item. (2). 确保Grid Panel是一个Tab Panel (3). 在Tab Panel 中设置 layoutOnTabChange //grid对象 var g = new Ext.grid.GridPanel( title: 'I will be the tab label'; ) var tabs2 = new Ext.TabPanel({ renderTo: document.body, activeTab: 0, widht: '100%' height: 150, frame: true, defaults:{autoScroll: true}, items: [0] //grid 对象 }) (4). 例子: http://examples.extjs.eu/?ex=gridintab
5. grid单元格中的链接 (1). 自定义一个renderer, 或者 (2). 使用Ext.grid.RowSelectionModel的rowselect事件, 如下: function handleRowSelect(selectionModel, rowIndex, selectedRecord){ //假定记录中存在url字段 var url = selectedRecord.get('url'); //如果你想打开另外一个窗口 window.open(url); } grid.getSelectionModel().on('rowselect',handleRowSelect);
6. 合并字段为一列 (1). 连接记录中的两个字段(或多个) var reader = new Ext.data.ArrayReader({},[ //合二为一 {name:'full_name',type:'string',mapping:'first_name+ " " + obj.last_name'}, {name: 'age'} ]); var grid = new Ext.grid.GridPanel({ store: new Ext.data.Store({ render: reader, data: Ext.grid.dummyData }), columns:[ {header: 'Full Name',dataIndex: 'full_name'}, {header: 'Age',dataIndex:'age'} ] }) (2). 可以创建任何你需要的字段.
-- 待续
转自(http://www.extjs.com/forum/showthread.php?t=27784) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-09-26
最关心的一个问题是grid如何自适应高宽,包括窗口大小改变只有也自动适应高宽
|
|
返回顶楼 | |
发表时间:2008-11-12
不错不错,
|
|
返回顶楼 | |
发表时间:2008-11-17
写道
不要在字段名中使用句点(.) ("filed.c" ext 不会转译)
其实EXT是会转译的 如用JSON-LIB生成的时间格式是:"createTime\":{\"date\":30,\"day\":3,\"hours\":15,\"minutes\":14,\"month\":3,\"nanos\":0,\"seconds\":38,\"time\":1209539678000,\"timezoneOffset\":-480,\"year\":108} 我们在JsonReader里设置 { name : 'createTime', type : 'date', mapping : 'createTime.time', dateFormat : 'time' } 即可 这段是EXT转译的代码 getJsonAccessor: function(){ var re = /[\[\.]/; return function(expr) { try { return(re.test(expr)) ? new Function("obj", "return obj." + expr) : function(obj){ return obj[expr]; }; } catch(e){} return Ext.emptyFn; }; }()
|
|
返回顶楼 | |
发表时间:2008-12-17
好东西啊。差点错过了。
|
|
返回顶楼 | |
浏览 13228 次