【发布时间】:2016-02-10 14:22:01
【问题描述】:
我正在使用服务器端处理并尝试填充选择过滤器。
我正在使用自定义数据表fnServerData 函数(elastic-datatables 的修改版本)来使用弹性搜索。我的fnCallback 函数如下所示:
fnCallback({
'draw': parseInt(draw),
'recordsTotal': response.hits.total,
'recordsFiltered': response.hits.total,
'data': dataSet,
'yadcf_data_2': [{
value: "Trident",
label: "Trident Eng'"
}, {
value: "Tasman",
label: "Tasman Eng'"
}]
});
现在我只是使用从您的示例响应中获取的虚拟值(也尝试了字符串列表而不是值/标签对象的更简单选项),但选择过滤器仍然有 0 值可供选择(列索引是正确的)。 知道自定义回调是如何搞砸的吗?
不用我修改就可以看到整个功能here
数据表设置:
var table = $('#datatable').DataTable({
"serverSide": true,
"processing": true,
"bStateSave": true,
"responsive": true,
"deferRender": true,
"scrollX": true,
"sDom": 'lrtip',
"lengthMenu": [
[10, 25, 50, 100],
[10, 25, 50, 100]
],
"pageLength": 10,
"order": [
[1, "asc"]
],
"columns": [...],
'fnServerData': $.fn.dataTable.elastic_datatables({
index: index,
type: type,
client: client
})
});
yadcf.init(table, [{
column_number: 0,
filter_type: "range_date",
datepicker_type: 'bootstrap-datetimepicker',
filter_plugin_options: datetimepickerOptions
}, {
column_number: 1,
filter_type: "text",
text_data_delimiter: ","
}, {
column_number: 2,
filter_default_label: "Select Filter"
}, {
column_number: 3,
filter_type: "text",
text_data_delimiter: ","
}]);
【问题讨论】:
-
我刚刚使用 .on('xhr.dt', fun...) 检查了 xhr 事件,并且 json 对象确实包含 yadcf_data_2 以及我提供给回调的所有其他信息。不过还是什么都没有。
-
您应该在 yadcf 中调试
xhr.dt事件 kistener 并尝试找出那里发生的事情(可能由于某种原因它被覆盖)请参阅此处的代码 github.com/vedmack/yadcf/blob/master/… -
isDOMSource(oTable) 在我的情况下是正确的。不知道这意味着什么,但我的表肯定是在初始 dom 中。
-
这意味着我没有在听 xhr 事件,因为缺少 serverSide: true。将看到如何检测你的情况。请发布您的数据表设置
标签: yadcf