你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Web开发
easyUI 滚动条
 
首页 > 程序开发 > Web开发 > JavaScript > 正文
easyUI 滚动条
2012-07-14 11:08:43     我来说两句 
收藏    我要投稿    [字体: ]

@author YHC

现在做一个项目用到easyUI,但是easyUI有一个小小的bug就是,列超过了不出现滚动条:

转载注明地址:thanks!


废话不多说直接上代码:

@author YHC


[javascript]
//easyUI默认出现滚动条  
function defaultHaveScroll(gridid){ 
    var opts=$('#'+gridid).datagrid('options'); 
    // alert(Ext.util.JSON.encode(opts.columns));  
    var text='{'; 
    for(var i=0;i<opts.columns.length;i++){ 
       var inner_len=opts.columns[i].length; 
       for(var j=0;j<inner_len;j++){ 
           if((typeof opts.columns[i][j].field)=='undefined')break; 
            text+="'"+opts.columns[i][j].field+"':''"; 
            if(j!=inner_len-1){ 
                text+=","; 
            } 
       } 
    } 
    text+="}"; 
    text=eval("("+text+")"); 
    var data={"total":1,"rows":[text]}; 
    $('#'+gridid).datagrid('loadData',data); 
   // $('#grid').datagrid('appendRow',text);  
   $("tr[datagrid-row-index='0']").css({"visibility":"hidden"}); 

//easyUI默认出现滚动条
function defaultHaveScroll(gridid){
 var opts=$('#'+gridid).datagrid('options');
    // alert(Ext.util.JSON.encode(opts.columns));
    var text='{';
    for(var i=0;i<opts.columns.length;i++){
     var inner_len=opts.columns[i].length;
     for(var j=0;j<inner_len;j++){
      if((typeof opts.columns[i][j].field)=='undefined')break;
       text+="'"+opts.columns[i][j].field+"':''";
       if(j!=inner_len-1){
        text+=",";
       }
     }
    }
    text+="}";
    text=eval("("+text+")");
    var data={"total":1,"rows":[text]};
    $('#'+gridid).datagrid('loadData',data);
   // $('#grid').datagrid('appendRow',text);
   $("tr[datagrid-row-index='0']").css({"visibility":"hidden"});
}
方法是通用的,你copy过去可以直接调用,传入的参数是你的datagrid的ID;

描述以上代码实现原理:

1.为什么easyUI默认不出现滚动条?????

看看这张图:注意(单表头和多表头一样)这里的举例是多表头

 \


右边的非锁定列其实是被一个DIV包裹了,单表头就是1个DIV,多表头就是2个DIV,由于他将DIV设置了内容超过的时候才出现滚动条,所以当你初始化没有内容的时候就不会出现滚动条;

2.以上代码如何实现的????

在你初始化之后根据gridID得到你的所有的列信息,拼接一个行json对象,用easyUI载入本地json的方法进行载入数据,在将该行设置为不可视,这样看起来的效果,如果你的行超过了grid的宽度那么就会出现滚动条,否则不会出现滚动条;

3.为什么不用css样式的display而用visibility属性?

display隐藏某个控件之后,不占改位置,也就是位置也取消了,但是visibility属性设置为hidden只是不可视但是位置还是占有的,所以出现滚动条; www.2cto.com

4. $("tr[datagrid-row-index='0']").css({"visibility":"hidden"});代码的解释?

这个代表查找tr的自定义属性datagrid-row-index的值为0的tr元素,如果是多表头就会得到2个tr对象,如果单表头就只有一个,实际上datagrid的每一行就是tr包含td,td又包含div,div中包含数据,所以最终我只需要隐藏tr那么它的所有子元素也随之隐藏不可视,就实现了最终的样式;

以上不是最好的做法,只是暂时的替代方案,贴出来与大家共享,如果大家有更好的解决方案,欢迎提出!

这个是visibility和display的区别的CSS3.0API上的:

 

\
  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089