【问题标题】:Mix clickable row and unclickable row on slickgrid在 slickgrid 上混合可点击行和不可点击行
【发布时间】:2018-11-25 13:21:04
【问题描述】:

对于我的列定义。

var columns = [
    {id: "label", name: "point", formatter:this.clickableFormatter,field: "point",width: 150},

然后我为它添加 clickhander。

chart.addClickHandler(){
}

我也为此使用clickableFormatter

clickableFormatter(row,cell,value,columnDef,dataContext){
  return "<span style='cursor:pointer;'>" + value + "</span>";
}

从这些代码。我的表格行是可点击的,我可以通过更改指针向用户显示可点击的位置。

但是现在我想让一行不可点击。 (例如total 行)

是否可以防止点击事件一低? 是否可以在一行中使用另一个formatter

我提供了来自for loop 的数据,并分别添加了total

for (var k = 0 ; k < data.length ;k++){       
    var temp = new Array();
    temp['id'] = data[k]['id'];
    temp['point'] = data[k]['point'];
    ret.push(temp);
}
 ret.push({ 
    'id' : "total",
    "point" : pointTotal,
 });

【问题讨论】:

    标签: javascript jquery slickgrid


    【解决方案1】:

    在你的格式化程序中,你可以访问单元格的值,所以如果value==='total',只返回一个空字符串。

    另外仅供参考,我认为您的代码中不需要 for 循环(您可以完全省略它),除非您使用它来计算总数,但您似乎不需要这样做。

    如果你认为你需要它来创建数组对象,那么你误解了javascript中的数组,你实际上设置的是对象属性,通常使用var temp = { };而不是数组进行初始化。
    一开始可能没有意义,但 javascript 中的一切都是对象,包括数组和函数。所以你可以给任何东西添加对象属性。

    somevar[numericVal] = x;    // set array element, somevar must be type Array
    somevar['stringVal'] = x;   // set object property 'stringVal'
    somevar.stringVal = x;      // identical to above line, different way of specifying
    

    【讨论】:

    • 如你所说,我可以在格式化程序中使用值。它解决了这个问题。而for循环,我很愚蠢!非常感谢你!!但是我不确定为什么 var temp ={} 比 Array();是因为内存占用??
    • 抱歉,我找不到能很好解释的链接。但是在那个循环中,您使用的是对象属性。变种温度 = {};声明一个对象,您可以在其上设置属性。变种温度 = [];或 var temp = Array[]; (相同)声明一个数组,它也是一个对象,因此您也可以在它们上设置对象属性。你只是从不使用他们实际的数组功能。
    猜你喜欢
    • 2023-03-22
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 2016-08-03
    • 2015-02-13
    • 1970-01-01
    相关资源
    最近更新 更多