JQuery DataTables - 服务器端JSON - 如何填充列当您有多个页面时过滤数据

问题描述 投票:0回答:1

我写这篇文章是因为我遇到了这个问题,当我发现很多人在谈论和询问时,我发现零实际解决方案。

当您将DT更改为服务器端处理时,然后添加每列下拉过滤器,默认情况下,下拉列表将仅包含在第一页上显示的值。

基线过滤:https://datatables.net/examples/api/multi_filter_select.html任何搜索此内容的人都可能点击这篇文章:https://datatables.net/forums/discussion/48780/server-side-column-filtering-with-drop-down-get-all-options

这会给你一个领先优势,但不会有任何细节。

jquery json datatables
1个回答
0
投票

诀窍是获取JSON columnFilters数据并使用它来填充下拉列表。

所以你改变了:

column.data().unique().sort().each( function ( d, j ) {
    select.append( '<option value="'+d+'">'+d+'</option>)
} );

至:

var json = buDueTable.ajax.json();
var filterData = json.columnFilters.Data_DT_Filters;
if (filterData != null) 
{
    var columnIdx = column.index();
    var thisFilterdata = filterData[columnIdx];
    if (thisFilterdata != null)
    {
        for(var j = 0; j < thisFilterdata.length; j++) {
            select.append('<option value="' + thisFilterdata[j].filterItem + '">' + thisFilterdata[j].filterItem + '</option>')
        }
    }
}

对于我的示例,我使用IList类与另一个类的IList传递到例程来格式化JSON数据。 在第一个类中,该属性名为Data_DT_Filters,在第二个类中,该属性称为filterData,其中的单个属性名为filterItem

我希望这有助于其他人试图解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.