【问题标题】:How to apply filters dynamically in nicolaskruchten pivottable.js如何在 nicolaskruchten pivottable.js 中动态应用过滤器
【发布时间】:2015-05-28 13:10:20
【问题描述】:

我正在使用 nicolaskruchten 数据透视表,用于显示我的数据:

$('#output').pivot([
    {country: "USA", city: "Boston"},
    {country: "USA", city: "NYC"},
    {country: "UK", city: "London"},
],
{
    rows: ["country"],
    cols: ["city"]
});

它可以正确显示表格,但现在我想在表格中动态过滤我的数据。

其中一种方法是过滤我的可用数据并使用过滤数据重绘数据透视表。 我想知道是否有任何可用的内置过滤方法。

pivot(input [,options]) 方法的 options 数组中有一个过滤器对象的规定,但找不到任何示例来实现。

如果有人可以建议我如何进一步进行?

【问题讨论】:

    标签: javascript pivot-table pivottable.js


    【解决方案1】:

    每次过滤时都必须重新渲染表格。您可以传递filter 属性,该属性是一个将行作为参数并返回布尔值的函数。见https://github.com/nicolaskruchten/pivottable/wiki/Parameters#pivotinput-options

    我应该补充一点,一般来说,您应该提交 Github 问题以获得有关此库的帮助,而不是在 StackOverflow 上提问。

    【讨论】:

    • 感谢@nicolaskruchten,感谢您的帮助和时间,它帮助了我并为我工作。以下是我的做法:var filterBy={filterCol:"country",filterValue:["USA"]}; optObject['filter']=function(rowObj){ if(filterBy.filterValue.indexOf(rowObj[filterBy.filterCol])>-1) return true; else return false; };
    • @Mayur:您能否发表您的评论作为答案,以便我们发现它有用。谢谢。
    • @MohamedThaufee 我已添加为现在的答案。
    【解决方案2】:

    以下是我的做法。它解决了我的问题。

     var filterBy={filterCol:"country",filterValue:["USA"]};
    
        optObject['filter']=function(rowObj){ 
    if(filterBy.filterValue.indexOf(rowObj[filterBy.filterCol])>‌​-1) return true; 
    else return false; 
    };
    

    【讨论】:

    【解决方案3】:

    我使用搜索/选择框来动态过滤数据。 过滤器的数据是从后端动态提供的。

    在 index.html 中:

    ------------- //搜索-选择框1 -------------- //搜索选择框2 ...

    ============== //数据透视表

    您实际上可以传递一个过滤器属性。但从内存的角度来看,这将是一个更好的实现方式。

    通过实现要显示的默认记录集,您可以使用动态过滤器限制加载到前端的数据。

    【讨论】:

    • 我不赞成它,因为答案不清楚,甚至可能会增加更多的混乱。没有 Fiddler 或示例代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    相关资源
    最近更新 更多