天天看点

EasyUI中datagrid的样式

EasyUI中,很多时候都要对datagrid的样式进行修改,例如大于24岁的行背景设置为红色;性别为男的列,字体设置为绿色;当行过长时,鼠标移动到行上时,显示该行全部内容;格式化显示时间等等需求。下面就来讲解一下,EasyUI中,怎么来实现上面的效果。

1、使用formatter列属性来对datagrid样式进行修改

1.1 对性别来进行控制

场景:

在程序中,很可能后台存放性别的,并不是“男”和“女”,而是0和1,那么在前端怎么来进行转换了,其实转换起来很容易,代码如下:

[java]

view plain copy print ?

  1. formatter:function(value , record , index){  
  2.         if(value == 0){  
  3.             return ‘<span style=color:red; >男</span>’ ;  
  4.         } else if( value == 1){  
  5.             return ‘<span style=color:green; >女</span>’ ;   
  6.         }  
  7. }  
formatter:function(value , record , index){
        if(value == 0){
            return '<span style=color:red; >男</span>' ;
        } else if( value == 1){
            return '<span style=color:green; >女</span>' ; 
        }
}
           

formatter是一个函数,该函数有3个参数,分别为当前列的值,当前整行的记录和当前行的索引。打印到控制台上结果如下:

EasyUI中datagrid的样式

通过这几个参数,可以实现很多效果。上面代码中,实现的效果如下:

EasyUI中datagrid的样式

1.2 实现对列信息的显示

场景:

在我们的开发中,经常会遇到下面的情况,某一列长度是固定的,但是该列的内容却很长,当前的单元格根本就显示不完所有的内容,这个时候,需要对这一列的内容进行一个提示功能,例如,当鼠标移上去的时候,就显示该列的完整内容,代码如下:

[java]

view plain copy print ?

  1. formatter:function(value,rowData,rowIndex){  
  2.         return ‘<span title=”’+value+‘”>’+value+‘</span>’;  
  3. }  
formatter:function(value,rowData,rowIndex){
        return '<span title="'+value+'">'+value+'</span>';
}
           

这个效果利用了span标签的title属性,当鼠标移到列上去的时候,就会显示title的内容。如果用户不需要使用这种方式,而是需要全部显示完了?后面会介绍这种需求的实现方式。

1.3 实现对敏感信息的隐藏

场景:

在开发中,经常需要对敏感的信息进行隐藏,例如密码等,这种效果也可以利用formatter来实现,代码如下:

[java]

view plain copy print ?

  1. formatter:function(value,rowData,rowIndex){  
  2.         return ‘******’;  
  3. }  
formatter:function(value,rowData,rowIndex){
        return '******';
}
           

效果图如上。

1.4 实现在单元格中增加新的操作

场景:

在开发中,有的需求希望增删改查操作放在toolbar上,如下图所示:

EasyUI中datagrid的样式

有的需求则希望邮件点击的时候,以弹出菜单的方式来展现,如下图所示:

EasyUI中datagrid的样式

而有的需求,则希望将这些操作放在该行末尾的一列中来展现给客户,如下图所示:

EasyUI中datagrid的样式

那这种效果怎么来实现了,代码如下:

[java]

view plain copy print ?

  1. formatter:function(value,rowData,rowIndex){  
  2.         return ‘<button οnclick=”getRowDataFromIndex(‘+rowIndex+‘);”>编辑    </button>|<button οnclick=”getRowDataFromIndex(‘+rowIndex+‘);”>删除 </button>’;  
  3. }  
formatter:function(value,rowData,rowIndex){
        return '<button οnclick="getRowDataFromIndex('+rowIndex+');">编辑    </button>|<button οnclick="getRowDataFromIndex('+rowIndex+');">删除 </button>';
}
           

以上就是使用formatter来实现的常用的效果,当然还可以利用formatter来实现很多效果,例如时间日期格式的转换等等。我们只需要记住formatter返回的是一串字符串。

1、使用rowStyler来实现对datagrid行样式进行修改

2.1 在开发中,经常需要对某些特殊的数据给予特殊的处理,例如分数高于95分的,年龄大于24岁的等等,这个时候,我们就需要使用rowStyle来实现类似的效果了。

场景:

对列表中年龄大于24岁的行,背景显示为灰色,其余行的背景显示为黄色。

代码如下:

[java]

view plain copy print ?

  1. rowStyler:function(rowIndex,rowData){  
  2.         if(rowData.age > 24){  
  3.                 return ‘background:gray’;  
  4.         }else{  
  5.                 return ‘background:yellow’;  
  6.         }  
  7. }  
rowStyler:function(rowIndex,rowData){
        if(rowData.age > 24){
                return 'background:gray';
        }else{
                return 'background:yellow';
        }
}
           

rowStyler是一个函数,该函数有两个参数,分别是行索引和当前行的值。该函数返回的也是一个字符串。使用这个函数可以对行的样式进行精细的控制。

注意:rowStyler是datagrid的属性,而不是列的属性,如果放在列属性中,是不会起任何作用的。

效果如如下:

EasyUI中datagrid的样式

1、使用styler来实现对datagrid列样式进行修改

3.1 对某些特殊列的特殊数据进行特殊的显示

场景:

在一个datagrid中,需要对部门为java的所有列进行特殊显示

代码如下:

[java]

view plain copy print ?

  1. styler:function(value,rowData,rowIndex){  
  2.         if(value == “java”){  
  3.                 return ‘color:blue’;  
  4.         }else{  
  5.                 return ‘color:red’;  
  6.         }  
  7. }  
styler:function(value,rowData,rowIndex){
        if(value == "java"){
                return 'color:blue';
        }else{
                return 'color:red';
        }
}
           

注意:styler也是一个函数,该函数也有3个参数,参数意义同上,该函数是datagrid列的属性,需要放在columns里面才能起作用,用来改变列的样式。

效果图如下:

EasyUI中datagrid的样式

1、使用nowrap来实现对datagrid的行进行折行显示

场景:

在开发中,有时一行太长,但又希望通过多行的方式,能够把所有的内容一次性显示完,这个时候,就需要使用nowrap属性来实现了,该属性是datagrid的属性。

实现起来很简单,只需在datagrid的配置项中,增加该属性即可。

Easyui的datagrid样式就先到这里。

document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?cdnversion=" + Math.ceil(new Date()/3600000)

<div id="digg" articleid="53540126">
        <dl id="btnDigg" class="digg digg_enable" onclick="btndigga();">

             <dt>顶</dt>
            <dd>0</dd>
        </dl>


        <dl id="btnBury" class="digg digg_enable" onclick="btnburya();">

              <dt>踩</dt>
            <dd>0</dd>               
        </dl>

    </div>
 <div class="tracking-ad" data-mod="popu_222"><a href="javascript:void(0);" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank">&nbsp;</a>   </div>
<div class="tracking-ad" data-mod="popu_223"> <a href="javascript:void(0);" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank">&nbsp;</a></div>
<script type="text/javascript">
    function btndigga() {
        $(".tracking-ad[data-mod='popu_222'] a").click();
    }
    function btnburya() {
        $(".tracking-ad[data-mod='popu_223'] a").click();
    }
        </script>