In 2012 I wrote a post List View Data Binding in Windows 8 JavaScript Metro Application. If you follow along this post some of the code will not work. So I decided to write a post again on working with ListView in WinJS. There are three simple steps to work with the ListView.
Step1: Create the Data Source
Let us use JavaScript array as the data source. In the real application you may want to call a service to fetch the data and create the data source. The JavaScript array is created as follows:
var MovieData = [ { Name: 'Abduction', Photo: 'images/abduction.jpg' }, { Name: 'A Better Life', Photo: 'images/abetterlife.jpg' }, { Name: 'A Dangerous Method ', Photo: 'images/adangerousmethod.jpg' }, { Name: 'Begineers', Photo: 'images/beginners.jpg' }, { Name: 'Bell Flower', Photo: 'images/bellflower.jpg' }, { Name: 'Black Thorn', Photo: 'images/blackthorn.jpg' }, { Name: 'Abduction', Photo: 'images/abduction.jpg' }, { Name: 'A Better Life', Photo: 'images/abetterlife.jpg' }, { Name: 'A Dangerous Method ', Photo: 'images/adangerousmethod.jpg' }, { Name: 'Begineers', Photo: 'images/beginners.jpg' }, { Name: 'Bell Flower', Photo: 'images/bellflower.jpg' }, { Name: 'Black Thorn', Photo: 'images/blackthorn.jpg' }, { Name: 'Abduction', Photo: 'images/abduction.jpg' }, { Name: 'A Better Life', Photo: 'images/abetterlife.jpg' }, { Name: 'A Dangerous Method ', Photo: 'images/adangerousmethod.jpg' }, { Name: 'Begineers', Photo: 'images/beginners.jpg' }, { Name: 'Bell Flower', Photo: 'images/bellflower.jpg' }, { Name: 'Black Thorn', Photo: 'images/blackthorn.jpg' }, ];
We cannot set an array directly as the data source of ListView. So to set array as the data source we need to convert the array as List object. MovieArray can be converted to the List object as shown follows:
var dataList = new WinJS.Binding.List(MovieData);
Step2: Create the Template
Once the data source is in placed we need to decide how to display the data in the ListView. Using the Template we decide the way ListView item will be rendered. Binding template can be created setting data-win-control attribute of a div to WinJS.Binding.Template. We are displaying and Photo from the data source. You need to make sure to use exact the same property name as it is in the data source.
<div id="movieitemtemplate" data-win-control="WinJS.Binding.Template"> <div data-win-bind="innerText:Name" style="height:20px;"> </div> <img data-win-bind="src:Photo" style="width:200px;height:150px;" /> </div>
Step3: Create the ListView
A div can be converted to a ListView setting data-win-control property to WinJS.UI.ListView. We are setting the itemTemplate to movieitemtemplate which we created in the previous step.
<div id="MovieListView" data-win-control="WinJS.UI.ListView" data-win-options="{itemTemplate: select('#movieitemtemplate')}"> </div>
After the ListView is created last step is to bind the ListView to the data source. We have already created List using the JavaScript array. To bind set data source of the list as the itemDataSource of the ListView. It is shown as follows:
args.setPromise(WinJS.UI.processAll()); var dataList = new WinJS.Binding.List(MovieData); var MovieList = document.getElementById('MovieListView').winControl; MovieList.itemDataSource = dataList.dataSource;
That’s it. These three steps are needed to work with a ListView in WinJS. Hope you like it. Happy coding.
Filed under: Windows Store Apps Image may be NSFW.
Clik here to view.
Clik here to view.
Clik here to view.
Clik here to view.
Clik here to view.
Clik here to view.
Clik here to view.
