我们不能将逗号分隔的列号传递给yadcf init函数来设置过滤器

时间:2018-07-25 04:05:58

标签: datatables-1.10 yadcf

数据表1.10.13 YADCF 0.9.3

  

Ajax数据。

在加载时,我正在调用以下函数:-

  

columnDataType =列数据类型以设置过滤器类型

     

columns =获取列标题以设置标签

     

table =初始化yadcf插件的表对象

function addFilter(columnDataType,columns,table){
var col = "";
var type="";
var label = "";
for(var i=0;i<columnDataType.length;i++){
    if(columnDataType[i]=="Character"){
        col = i;
        type = "text";
for(var index=0;index<columns.length;index++){
    if(i==index)
        label = "Select "+columns[i].title;
}


yadcf.init(table, [{
                        column_number: col,
                        filter_type: type,
                        filter_default_label : label
                    }]);
} else if(columnDataType[i]=="Number"){
        col = i;
        type = "range_number";

yadcf.init(table, [{
                        column_number: col,
                        filter_type: type
                    }]);
} else if(columnDataType[i]=="Date"){
        col = i;
        type = "date";
        label = "dd-MMM-yyyy";

yadcf.init(table, [{
                        column_number: col,
                        filter_type: type,
                        moment_date_format: 'dd-MMM-yyyy',
                        filter_default_label : label
                    }]);
}
}

}

  

以上实现给出了无法读取未定义的属性'filter_delay'错误

     

所以,这种情况是列(编号,类型)是动态的,表可能有多个字符列,我想为其设置文本过滤器类型,多个日期,数字列等。因此如何传递这些列编号。 s之类的插件:-

yadcf.init(table, [{
                            column_number: col1,col2,col3,
                            filter_type: 'text',
                            filter_default_label : label
                        }]);
  

OR

var col = [col1,col2,col3];
    yadcf.init(table, [{
                            column_number: col,
                            filter_type: 'text',
                            filter_default_label : label
                        }]);

1 个答案:

答案 0 :(得分:0)

您不能像这样初始化yadcf,每个列过滤器定义都应该有自己的对象 您可以循环创建它们并将其推入数组,稍后可以将其传递给yadcf.init函数