ExtJs 解决在GridPanel中使用bbar或者tbar的分页条的宽度自适应问题
2014-01-25 09:23
274 查看
在GridPanel中利用bbar或者tbar来完成分页功能,是个很常见的做法,但是这里发现一个问题,就是宽度不能够自适应。首先我们看下这样的源代码:
其中可以看到bbar作为底部工具栏,显示分页工具条。运行中代码。
发现底部没有随着浏览器尺寸的拖动而自适应。
这个问题今天被纠结了很久~先后用width:100%或者CSS去调整样式,都失败了。后来在Ext.all.debug.js的框架中找到一个onResize的事件,只要浏览器尺寸改变,就会触发该事件:
代码
如果包含bbar或者tbar的话,就会重新设置浏览器调整过的宽度。于是,我把红色的部分注释掉,得到了解决。
但是,我不想去修改Ext.all.debug.js的代码。因此,我建议在使用分页的时候,可以考虑多加一个分页的DIV层,比如:
然后修改脚本:
代码
这样问题也可以得到解决。
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->var store = new Ext.data.Store({ proxy: new Ext.data.ScriptTagProxy({ url: main_domain + page._handlers['enterprise'] + 'getList' }), //proxy: new Ext.data.HttpProxy({ url: page._handlers['enterprise'] + 'getList' }), reader: new Ext.data.JsonReader({ totalProperty: 'TotalProperty', root: 'List' }, [ { name: 'Id' }, { name: 'Code' }, { name: 'Name' }, { name: 'CreateTime' } ]) //sortInfo: { field: "Name", direction: "ASC" } }); store.load({ params: { start: 0, limit: 5} }); var selModel = new Ext.grid.CheckboxSelectionModel(); var grid = new Ext.grid.GridPanel({ renderTo: 'gridEnterprise', stripeRows: true, // 斑马线效果 //width:'100%', autoHeight: true, autoWidth: true, loadMask: true, // frame: true, // autoExpandColumn: 'Id', // columnLines: true, store: store, selModel: selModel, columns: [ new Ext.grid.RowNumberer(), selModel, { header: '编号', dataIndex: 'Id', sortable: true }, { header: 'Code', dataIndex: 'Code', sortable: true }, { header: '企业名称', dataIndex: 'Name', sortable: true }, { header: '开户日期', dataIndex: 'CreateTime', sortable: true } ], viewConfig: { enableRowBody: true //forceFit: true } bbar: new Ext.PagingToolbar({ pageSize: 5, store: store, displayInfo: true, displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条', emptyMsg: "没有记录" }) });
其中可以看到bbar作为底部工具栏,显示分页工具条。运行中代码。
发现底部没有随着浏览器尺寸的拖动而自适应。
这个问题今天被纠结了很久~先后用width:100%或者CSS去调整样式,都失败了。后来在Ext.all.debug.js的框架中找到一个onResize的事件,只要浏览器尺寸改变,就会触发该事件:
代码
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->onResize: function (adjWidth, adjHeight, rawWidth, rawHeight) { var w = adjWidth, h = adjHeight; if (Ext.isDefined(w) || Ext.isDefined(h)) { if (!this.collapsed) { if (Ext.isNumber(w)) { this.body.setWidth(w = this.adjustBodyWidth(w - this.getFrameWidth())); } else if (w == 'auto') { w = this.body.setWidth('auto').dom.offsetWidth; } else { w = this.body.dom.offsetWidth; } if (this.tbar) { this.tbar.setWidth(w); if (this.topToolbar) { this.topToolbar.setSize(w); } } if (this.bbar) { this.bbar.setWidth(w); if (this.bottomToolbar) { this.bottomToolbar.setSize(w); if (Ext.isIE) { this.bbar.setStyle('position', 'static'); this.bbar.setStyle('position', ''); } } } … }
如果包含bbar或者tbar的话,就会重新设置浏览器调整过的宽度。于是,我把红色的部分注释掉,得到了解决。
但是,我不想去修改Ext.all.debug.js的代码。因此,我建议在使用分页的时候,可以考虑多加一个分页的DIV层,比如:
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><div id="gridEnterprise"></div> <div id="pager"></div>
然后修改脚本:
代码
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->var pager = new Ext.PagingToolbar({ pageSize: 5, store: store, displayInfo: true, displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条', emptyMsg: "没有记录", renderTo: 'pager' });
这样问题也可以得到解决。
相关文章推荐
- ExtJs实践(5)——解决在GridPanel中使用bbar或者tbar的分页条的宽度自适应问题
- IE7下解决A标签使用padding宽度自适应 padding失效的问题
- 导航面板[ExtJS4]ExtJS4左边菜单面板收缩展开,右边TabPanel内容动态更新(解决宽度不能自适应问题)
- [ExtJS4]ExtJS4左边菜单面板收缩展开,右边TabPanel内容动态更新(解决宽度不能自适应问题)
- 关于Extjs 2.2 中 Gridpanel在IE6 下宽度超长的问题已经解决
- 使用jQuery不判断浏览器高度解决iframe自适应高度问题
- 使用JQuery解决图片自适应大小问题(比较好的解决图片从加载到完全显示的大小问题)
- 关于使用contacts 或者 contacts_cn 遇到的问题解决
- thinkphp使用http::download下载word或者ppt文件乱码问题的解决方法
- 使用jQuery不判断浏览器高度解决iframe自适应高度问题
- 解决使用了float后IE6下li高度比Firefox或者IE8高的问题
- 使用ssh或者远程执行命令是的一些问题解决方法
- maven出现(请使用-source 5 或者更高版本以启用XX)问题解决
- extjs4 searchField的使用方法 及 remodeFiter 未定义问题的解决
- maven出现(请使用-source 5 或者更高版本以启用XX)问题解决
- ExtJS中RowEditing插件的一些使用问题及解决方法
- 使用cocos studio界面自适应遇到问题及解决方法
- 使用XIB的UITableViewCell自适应,以及出现的问题进行解决
- 使用cocos2d-x时解决iPhone屏幕自适应问题的一个思路
- Extjs之gridPanel的高度自适应问题解决方法