基于服务器的DataTables+YADCF和基于AJAX的select2:选择选项将清除select2选择
设置: DataTables使用基于AJAX的分页远程数据 YADCF使用Select2,它使用AJAX调用获取选项 选择Select2选项将触发网格刷新并过滤所有内容 问题是: DataTables提取更新的行集后,YADCF立即重新运行其初始化例程,Select2将丢失其状态,即所选选项不再被选中,不再位于DOM中 这: 在grid重新加载select2控件重新初始化并丢失通过AJAX拉取的所有选项(包括所选选项)后变为: 在这种情况下,如何避免YADCF重新初始化 调试了一段时间后,我发现函数appendFilters。。。从该YADCF行每次网格刷新后调用: 反过来,DataTables的draw事件会触发该事件 谢谢 编辑: DataTables配置数组:基于服务器的DataTables+YADCF和基于AJAX的select2:选择选项将清除select2选择,datatables,yadcf,Datatables,Yadcf,设置: DataTables使用基于AJAX的分页远程数据 YADCF使用Select2,它使用AJAX调用获取选项 选择Select2选项将触发网格刷新并过滤所有内容 问题是: DataTables提取更新的行集后,YADCF立即重新运行其初始化例程,Select2将丢失其状态,即所选选项不再被选中,不再位于DOM中 这: 在grid重新加载select2控件重新初始化并丢失通过AJAX拉取的所有选项(包括所选选项)后变为: 在这种情况下,如何避免YADCF重新初始化 调试了一段时间后,我发
var dataTableConfig = {
"autoWidth": false,
"deferLoading": 220,
"pageLength": 5,
"searchDelay": 0,
"searching": true,
"placeholder": null,
"ordering": true,
"paging": true,
"info": true,
"columns": [
{
"name": "company",
"data": {
"_": "company",
"filter": "company",
"display": "company"
},
"visible": true,
"searchable": true,
"orderable": true,
"className": "column_Company"
}
],
"showGlobalSearch": true,
"enableColumnFilter": true,
"columnFilterPosition": "table",
"resetPaging": true,
"select": {
"style": "single"
},
"serverSide": true,
"ajax": {
"url": "/datasource/",
"type": "post"
}
};
YADCF INIT:
每次重新绘制网格后,YADCF重新初始化列过滤器的原因是什么?请发布dt和YADCF构造函数/init代码的相关代码,并解释select2是如何获取数据的-它是像其他过滤器一样从dt源获得的,还是使用自己的ajax源?更新。select2使用的正是这种方法:以前没有尝试过这种方法,我建议您了解如何强制select2从ajax源代码中提取数据,并在yadcf中添加所需的代码行,或者让我知道如何让它这样做。b、 t.w您可以提供select2所需的输入以及您的datatables数据源,如showcase上所述。我将详细介绍select2。但是为什么每次网格重画时都要重新初始化列过滤器?一次就足够了吗?每次网格重画后YADCF重新初始化列过滤器的原因是什么?请发布dt和YADCF构造函数的相关代码/init代码,并解释select2是如何获取数据的——它是像其他任何过滤器一样来自dt源,还是使用自己的ajax源?已更新。select2使用的正是这种方法:以前没有尝试过这种方法,我建议您了解如何强制select2从ajax源代码中提取数据,并在yadcf中添加所需的代码行,或者让我知道如何让它这样做。b、 t.w您可以提供select2所需的输入以及您的datatables数据源,如showcase上所述。我将详细介绍select2。但是,为什么要在每次重新绘制网格时重新初始化列过滤器呢?仅仅初始化一次还不够吗?
colCfg = [
{
"column_number": 2,
"filter_type": "select",
"data": [],
"filter_default_label": "(select..)",
"enable_auto_complete": false,
"sort_as": "alpha",
"sort_order": "asc",
"filter_match_mode": "contains",
"exclude_label": "exclude",
"select_type": "select2",
"select_type_options": {
"width": "300",
ajax: {
url: '/datasource/',
dataType: 'json',
method: 'post',
delay: 750,
data: function (params) {
return {
q: params.term,
page: params.page
};
},
processResults: function (data, params) {
params.page = params.page || 1;
return {
results: data.results,
pagination: {
more: (params.page * 20) < data.total_count
}
};
},
cache: true
},
minimumInputLength: 1,
templateResult: formatItem,
templateSelection: formatItemSelection,
escapeMarkup: function(v) {return v;}
},
"case_insensitive": true,
"filter_delay": 500
}
];
yadcf.init(dataTable, colCfg);