0

winJS ListView 问题

我正在开发一个 winJS 应用程序。我有列表视图。我需要将新数据添加到现有列表视图中。我该怎么做?

4

2 回答 2

0

通常列表视图与WinJS.Binding.List绑定,只需将新项目添加到该列表中,它们就会出现在列表视图中。

于 2013-04-05T04:23:12.240 回答
0

建议先使用 WinJS.Binding.List.createSorted() 并在排序列表上创建分组。如果您的排序功能可以确保新插入的项目按排序顺序排在前面 - 它应该出现在组中的第一位。

_initializeListView: function initializeListView()
    {
        var data = [{ title: 'parle-ggg', brand: 'parle' }, { title: 'parle-gg', brand: 'parle' }, { title: 'parle-g', brand: 'parle' },
            { title: 'maggi-sauce', brand: 'maggi' }, { title: 'maggi-sauce-2', brand: 'maggi' }, { title: 'maggi-sauce-3', brand: 'maggi' }];
        var list = new WinJS.Binding.List(data);
        var sortedList = list.createSorted(function sorter(item1, item2)
        {
            var result;
            if (item1.title < item2.title) 
                result = -1;
            else if (item1.title == item2.title)
                result = 0;
            else
                result = 1;

            return result;
        });
        var groups = sortedList.createGrouped(
            function groupKey(item)
            {
                return item.brand;
            },
            function groupData(item)
            {
                var result = { title: item.brand };
                return result;
            }
            );
        listView.winControl.itemDataSource = groups.dataSource;
        listView.winControl.groupDataSource = groups.groups.dataSource;
        this.sortedList = sortedList;
    },
    _oncmdclick: function oncmdclick(event) // this is event handler where you want to add new item
    {
        this.sortedList.push(newItem);
    },

上面的代码片段试图创建一个按标题排序并按品牌分组的列表。稍后在 sortedList 中插入项目时 - 插入的项目被正确放置在组中。例如 - 按标题“parle-f”添加项目会将其放在 parle 品牌组中的首位,而按标题“parle-h”添加项目会将其放在 parle 品牌组中的最后。

HTH。

于 2013-04-05T07:40:11.117 回答