我正在开发一个winJS应用程序。我有listview.I需要将新数据添加到现有列表视图。我该怎么办?
答案 0 :(得分:0)
通常情况下,列表视图与WinJS.Binding.List绑定,只需将新项目添加到该列表中,它们就会显示在列表视图中。
答案 1 :(得分:0)
建议首先使用WinJS.Binding.List.createSorted()并在排序列表中使用createGrouped。如果您的排序功能可以确保新插入的项目按排序顺序排在前面 - 它应该首先出现在组中。
_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。