这是我的代码的简化版本:
$('#myTable').dataTable({
"ajax" : myURL + "/GetTableData",
"aoColumns" : {
{sTitle: "ID", bVisible: false},
...
{sTitle: "Full Name",
mData: null,
mRender: function (data, type, arrRowData) {
return mergeName(arrRowData[3],arrRowData[4],arrRowData[5])
}
},
...
{sTitle: "Column 10", mData: 14},
},
"aaSorting" : [ 0, 'desc']
}).yadcf([{ column_number: 10 }]);
问题是,我有几列bVisible: false
没有显示,还有自定义列,如"全名"以上。因此,mData索引与实际显示的列索引不对应。我想显示"第10列和第34列的过滤器; (这实际上是行数据中的第14列),但它尝试过滤的数据来自列索引(mData)10,而不是14.如何分别指定显示列和实际数据列 - 这可能吗?到目前为止,我发现的唯一解决方法是使用data: [...]
对过滤器选项进行硬编码并将其传递给yadcf,但这种方法显然不是最理想的,只能在有限的场景下使用。
要添加的编辑(可能这更容易):如何为"全名"创建过滤器?列,以便过滤器选择正确吗?现在它只显示名字(arrRowData[3]
),因为它显然假设原始行数据是整个列。但奇怪的是,过滤器确实可以在整个列上运行 - 所以如果我选择" John"从下拉列表中,它找到了John Smith和Bill Johnson。
答案 0 :(得分:0)
您可以将过滤器放在容器div
/ span
内,并使用filter_container_id或filter_container_selector指定yadcf列定义,您可以将容器放在任何您想要的位置(包括表头)