如何排序和过滤实现IListDataAdapter的WinJS自定义数据源?

时间:2012-11-05 15:53:44

标签: javascript windows-8 winjs

我为ListView创建了一个自定义数据源,用于实现IListDataAdapter。数据来自几个不同的Web服务,需要多个异步调用才能完全填充。数据填充正确,ListView展示了漂亮的“无限滚动”功能,根据需要加载新的数据页。

我现在正试图过滤几个不同属性的数据。我有一个复选框和一个下拉列表,这两个列表都有正确触发的事件。这些事件应该调用updateLayout方法......但由于某种原因,该方法最终未定义。

    checkBoxClick: function (eventObject) {
        this.updateLayout(document, Windows.UI.ViewManagement.ApplicationView.value);
    },

    dropDownListValueChange: function (eventObject) {
        this.updateLayout(document, Windows.UI.ViewManagement.ApplicationView.value);
    },

我希望有人在那里有一个项目使用自定义数据源并支持排序和过滤,并愿意与该类共享该代码。

2 个答案:

答案 0 :(得分:2)

您可以使用以下API:

WinJS.Binding.List.createSorted(sortingFunction)WinJS.Binding.List.createFiltered(filterFunction)

您应首先使用“已排序”或“已过滤”dataSourceWinJS.Binding.List绑定到视图。然后,对同一dataSource的任何新添加的值都将自行更新。

P.S。我还注意到你正在使用updateLayout。我不知道它是否与您的问题有关,但自Windows 8发布以来,它开始使用名为initializeLayout的函数来更新视图。

答案 1 :(得分:0)

this变量很可能在事件处理程序中没有正确确定范围。