使用 ajax 时,将外部过滤器与表排序器一起使用



当使用ajax时,有没有办法使用表排序器在表外部使用下拉过滤器,该过滤器根据与表中的列无关的条件进行过滤?

例如,如果表是帐户列表,我希望能够过滤过期帐户,即使这不是表中的列之一。表中的每一列也将有自己的标准表排序器筛选器。

由于我使用的是 ajax 和服务器端过滤,因此即使是列过滤器也仅用于向 ajax url 发送$_REQUEST,而不是过滤表中显示的内容。因此,我希望能够发送这样的$_REQUEST,而不必将filter_formatter与特定列相关联。

意识到我可以通过添加一个虚拟列、使用 filter_formatter 并通过类似于此示例中显示的示例的 change 函数绑定外部下拉列表来做到这一点,但我希望有一种更简单的方法。谢谢

尝试使用 customAjaxUrl 选项。在该回调代码中,您可以获取当前选择的外部过滤器并将其作为字符串附加到您的服务器。像这样:

// modify the url after all processing has been applied
customAjaxUrl: function(table, url) {
    // get current selection & add it to the url
    return url += '&filter=' + $('.external-filter').val();
}

若要从注释中回答问题,可以尝试绑定到外部筛选器的 change 事件,然后将该筛选器值保存到表数据中(如果不想使用作用域/全局变量)。尝试这样的事情:

$('.external-filter').on('change', function(){
    $('table')
        .data('filter_value', $(this).val() )
        .trigger('update');
});

然后在 customAjaxUrl 函数中执行以下操作:

// modify the url after all processing has been applied
customAjaxUrl: function(table, url) {
    // get current selection & add it to the url
    return url += '&filter=' + $(table).data('filter_value');
}

最新更新