当前位置: 首页 > news >正文

ExtJs实践(5)——解决在GridPanel中使用bbar或者tbar的分页条的宽度自适应问题...

        在GridPanel中利用bbar或者tbar来完成分页功能,是个很常见的做法,但是这里发现一个问题,就是宽度不能够自适应。首先我们看下这样的源代码:

ExpandedBlockStart.gif 代码
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作为底部工具栏,显示分页工具条。运行中代码。

image

发现底部没有随着浏览器尺寸的拖动而自适应。

这个问题今天被纠结了很久~先后用width:100%或者CSS去调整样式,都失败了。后来在Ext.all.debug.js的框架中找到一个onResize的事件,只要浏览器尺寸改变,就会触发该事件:

ExpandedBlockStart.gif 代码
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层,比如:

< div  id ="gridEnterprise" ></ div >  
< div  id ="pager" ></ div >

然后修改脚本:

ExpandedBlockStart.gif 代码
var  pager  =   new  Ext.PagingToolbar({ 
    pageSize: 
5
    store: store, 
    displayInfo: 
true
    displayMsg: 
' 显示第 {0} 条到 {1} 条记录,一共 {2} 条 '
    emptyMsg: 
" 没有记录 "
    renderTo: 
' pager '  
});

这样问题也可以得到解决。

image

相关文章:

  • 【Java】【高精度】【递推】UVA - 11375 - Matches
  • c# 允许服务与桌面交互(已补充)
  • 让你的分享飞起来——极光推出社会化分享组件
  • Call指令和Ret指令讲解02 - 零基础入门学习汇编语言49
  • dubbo 入门
  • CentOS下rpm包与yum安装与卸载 更新系统源
  • Angular Service入门
  • 利用Jsoup解析HTML
  • 开源yYmVc项目,邀您和我一起开发:)
  • 家庭网络互联技术发展趋势探讨
  • 在ASP.NET MVC 3上使用依赖注入更加容易了
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Kafka集群磁盘使用率瞬超85%,幕后元凶竟是它?
  • 如何挑选服务器?哪个牌子的最好?(1万元以下的)
  • SNMP、ASN.1、MIB之间的关系
  • 收藏网友的 源程序下载网
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • Debian下无root权限使用Python访问Oracle
  • Java超时控制的实现
  • java小心机(3)| 浅析finalize()
  • maven工程打包jar以及java jar命令的classpath使用
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Python学习之路16-使用API
  • SpiderData 2019年2月13日 DApp数据排行榜
  • tensorflow学习笔记3——MNIST应用篇
  • 初识 webpack
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 为什么要用IPython/Jupyter?
  • zabbix3.2监控linux磁盘IO
  • 阿里云ACE认证之理解CDN技术
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • #Ubuntu(修改root信息)
  • #单片机(TB6600驱动42步进电机)
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (C语言)字符分类函数
  • (差分)胡桃爱原石
  • (翻译)terry crowley: 写给程序员
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (转)大道至简,职场上做人做事做管理
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .NET Core 2.1路线图
  • .NET导入Excel数据
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [20170728]oracle保留字.txt
  • [BJDCTF2020]The mystery of ip1
  • [BUUCTF 2018]Online Tool
  • [C++]运行时,如何确保一个对象是只读的
  • [CTF]2022美团CTF WEB WP
  • [delphi]保证程序只运行一个实例
  • [Gradle] 在 Eclipse 下利用 gradle 构建系统