Search code examples
javascriptwindowswindows-8winjs

obtaining all items of listView in winjs


I have a listview div on screen and I have added itemDataSource to it successfully

var lettersList = new WinJS.Binding.List(jsonArrayForClearance);
var list_ = document.getElementById("prodListView").winControl;
list_.itemDataSource = lettersList.dataSource;
list_.itemTemplate = document.getElementById("tileTemplate");
list_.forceLayout();

Now in each item I have added a custom input type for user to specify(using template). I want to iterate through all the items of list and obtain the value of that input type in an array. how can I do it?

EDIT: My question is to access custom input type declared in list items. As such we use following code to access any input type named "inpT"

document.getElementById('inpT');

but how to access the same from list item? can I use Following code(as suggested by user2608614)

var listView = document.getElementById("prodListView").winControl;
var list = listView.itemDataSource.list;
for (var i = 0; i < list.length; i++) {
   var item = list.getAt(i);
   item.getElementById('inpT');
}

Solution

  • You can iterate through the list elements like this:

        var listView = document.getElementById("prodListView").winControl;
        listView.itemDataSource.getCount()
        .done(function(count) {
            for (var i = 0; i < count ; i++) {
                listView.itemDataSource.itemFromIndex(i)
                .done(function (item) {
                    //***item will contain your property
                 });
            }
        });
    

    Is not the best solution as it make it difficult to chain the promises, I'm also looking for a better one. But it works.