现在的位置: 首页 > easyui > Grid > datagrid > 正文
jQuery EasyUI Datagrid 列属性函数中如何获取当前列信息
2015年02月13日 datagrid ⁄ 共 565字 评论数 2 ⁄ 被围观 8,426 views+

我们在使用Datagrid列属性formatter时,有些场景下,在formatter函数内部,我们需要知道当前列的一些配置信息,比如说 title,filed 等信息,而formatter函数入参只有行索引,值,行数据,那么怎么获取 title,filed 等信息呢?

懒得说的一个问题,但是时不时会有朋友问起,问起这个问题的朋友大多都是javascript底子太薄,其实formatter函数内部的this在运行时默认就是指向当前列的配置对象,且组件内部并没有改变this指向,所以通过this就可以拿到所有信息了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$('#dg').datagrid({
    columns: [[{
        field: 'userId',
        title: 'User',
        width: 80,
        formatter: function(value, row, index) {
            console.log(this.title); //User
            console.log(this.field); //userId
            if (row.user) {
                return row.user.name;
            } else {
                return value;
            }
        }
    }]]
});

类似的列属性还有styler和sorter。本文简单记录这个问题,希望以后不用再费口舌。

另外,一年又过去了,个人来讲,算是积累不小的一年。在这里预祝大家新年快乐,心想事成

目前有 2 条留言 其中:访客:1 条, 博主:1 条

  1. ci : 2016年03月11日10:45:13  -49楼 @回复 回复

    您好!我想请教下一个问题,我想把datagrid的columns 中的formatter 传入字符串参数类似这样 {field:’nickname’,title:’用户昵称’,formatter:’nickname_fmter’} 去调用nickname_fmter 有什么比较好的方式去做了 我目前的做法是修改源码jquery.easyui.min.js(10494)行左右
    if(typeof(col.formatter) === “string”){
    var ffun = eval(‘(‘ + col.formatter + ‘)’);
    cc.push(ffun(_7aa,_7a7,_7a6));
    } else {
    cc.push(col.formatter(_7aa,_7a7,_7a6));
    }
    这样去实现的,这样你看在性能上有什么影响,请教下更好的方式,谢谢

给我留言

留言无头像?


×