【发布时间】:2015-03-18 09:54:34
【问题描述】:
首先我很感谢这个神奇的插件。
我使用的是 yadcf 版本 0.8.8.beta.10。
我正在尝试从服务器获取选择过滤器数据。但是当表被初始化时,选择数据是从 dom 中获取的。如果我按过滤器按钮调用 exFilterExternallyTriggered(table) 或按列排序按钮,则选择过滤器中的数据将使用来自服务器的数据进行更新。
这里是javascript
var table = $('#' + table_id).DataTable({
"scrollX": true,
"processing": true,
"serverSide": true,
"fnDrawCallback": function( oSettings ) {
fixDropDowns();
},
"order": [[ 15, "desc" ]],
"ajax": {
"url": "${createLink(action: 'DataTableAjaxHandler')}",
},
"columns": [
{"data": "edit",
"searchable": false,
"sortable": false,
},
{ "data": "subscriberId",
"searchable": true,
"sortable": true},
{ "data": "unitName",
"searchable": true,
"sortable": true},
{ "data": "networkType",
"searchable": false,
"sortable": true},
.................................
],
"sDom":"<'dt-toolbar'<'col-xs-18 col-sm-9 filterDiv'>r<'col-sm-3 col-xs-6 hidden-xs'l>>" +
"t" +
"<'dt-toolbar-footer'<'col-sm-6 col-xs-12 hidden-xs'i><'col-xs-12 col-sm-6'p>>",
"autoWidth": true,
"preDrawCallback": function () {
// Initialize the responsive datatables helper once.
if (!responsiveHelper_dt_basic) {
responsiveHelper_dt_basic = new ResponsiveDatatablesHelper($('#' + table_id), breakpointDefinition);
}
},
"rowCallback": function (nRow) {
responsiveHelper_dt_basic.createExpandIcon(nRow);
},
"drawCallback": function (oSettings) {
responsiveHelper_dt_basic.respond();
},
"initComplete": function(){
var filters = [
new Filter(1, "subscriberId", "${message(code: 'radioUnit.subscriberId.label')}"),
new Filter(2, "nameFilter", "${message(code: 'radioUnit.unitName.label')}"),
new Filter(3, "networkType", "${message(code: 'radioUnit.networkType.label')}"),
]
initFilterInterface(this.api(), filters, "${message(code: 'filter.filterButton.text')}");
setTimeout(function () {
yadcf.init(table, [
{
column_number: 1,
filter_type: "select",
filter_container_id: "subscriberId",
externally_triggered: true,
filter_reset_button_text: false
}, {
column_number: 2,
filter_container_id: "nameFilter",
externally_triggered: true,
filter_reset_button_text: false
}, {
column_number: 3,
filter_type: "text",
filter_container_id: "networkType",
externally_triggered: true,
filter_reset_button_text: false
}]);
}, 1000);
}
});
new $.fn.dataTable.FixedColumns( table, {
leftColumns: 2
} );
这是我在数据表 init 上从服务器获取的 json:
{"draw":1,"recordsTotal":23,"recordsFiltered":19,
"yadcf_data_1":["somedata"],"yadcf_data_2"
:["someValue","test2","test2","test2"],"data":[...]}
在数据表初始化之后: After init
点击过滤按钮或排序列后: After hitting filter
很抱歉上传照片到外部网站,因为我没有 10 个代表点我不能使用图片标签。
从数据表初始化后的图像中可以看出,它使用 dom,但在点击过滤器后,它使用我从服务器返回的值。因此,出于某种原因,从服务器首次加载数据时会忽略 yadcf_data_1、yadcf_data_2 值并使用 DOM。
也许我做错了。使用外部按钮触发搜索时,是否有办法从服务器中填充选择?
还有其他问题。是否可以将 select2 搜索与 ajax 一起使用。因为我的大表很少,将所有值从服务器发送到客户端需要一段时间。
【问题讨论】:
标签: yadcf