ListView.selection property
Gets an ISelection that contains the range of currently selected items.
Syntax
var selection = listView.selection;
Property value
Type: ISelection**
An ISelection object containing the selected items.
Remarks
Determining the difference when the selection changes
The onselectionchanged event notifies you when the ListView control's selection changes, but it doesn't tell you how the selection changed.
To determine how the selection changed
Before the selection changes, cache the current selection by calling selection.getIndices and storing the result. selection.getIndices returns an Array that contains the indexes of the currently selected items.
var prevSelection = lv.selection.getIndices();
(Where
lv
is a ListView control.)Register for the onselectionchanged event.
When the onselectionchanged event fires, call selection.getIndices again to get an Array of the currently selected item indexes.
var currentSelection = lv.selection.getIndices();
Compare the two arrays. One way to calculate the difference is to use the Array.filter method.
Examples
This example demonstrates how to use the selection property to select all items in a ListView, clear the selection, and display the number of items selected.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>selectionExample</title>
<!-- WinJS references -->
<link href="//Microsoft.WinJS.2.0/css/ui-light.css" rel="stylesheet" />
<script src="//Microsoft.WinJS.2.0/js/base.js"></script>
<script src="//Microsoft.WinJS.2.0/js/ui.js"></script>
<link href="selectionExample.css" rel="stylesheet" />
<script src="selectionExample.js"></script>
<script src="/js/data.js"></script>
</head>
<body>
<div id="mediumListIconTextTemplate" data-win-control="WinJS.Binding.Template">
<div style="width: 282px; height: 70px; padding: 5px; overflow: hidden; display: -ms-grid;">
<!-- Displays the "picture" field. -->
<img data-win-bind="alt: title; src: picture"
src="#"
style="width: 60px; height: 60px; margin: 5px; -ms-grid-column: 1;" />
<div style="margin: 5px; -ms-grid-column: 2">
<!-- Displays the "title" field. -->
<h4 data-win-bind="innerText: title"></h4>
<!-- Displays the "text" field. -->
<h6 data-win-bind="innerText: text"></h6>
</div>
</div>
</div>
<div id="selectionExampleListView" data-win-control="WinJS.UI.ListView"
data-win-options="{itemDataSource : DataExample.itemList.dataSource,
itemTemplate: select('#mediumListIconTextTemplate'),
tapBehavior: 'toggleSelect',
layout : {type: WinJS.UI.GridLayout}}">
</div>
<button id="selectAllButton">Select all</button>
<button id="clearSelection">Clear selection</button>
<p>Items selected:</p>
<p id="outputParagraph"></p>
</body>
</html>
(function () {
"use strict";
var lView;
var outputParagraph;
WinJS.UI.Pages.define("/pages/selection/selectionExample.html", {
// This function is called whenever a user navigates to this page. It
// populates the page elements with the app's data.
ready: function (element, options) {
lView = element.querySelector("#selectionExampleListView").winControl;
outputParagraph = element.querySelector("#outputParagraph");
lView.addEventListener("selectionchanged", this.selectionChanged);
element.querySelector("#selectAllButton").addEventListener("click", this.selectAllClicked);
element.querySelector("#clearSelection").addEventListener("click", this.clearSelection);
},
unload: function () {
},
updateLayout: function (element, viewState, lastViewState) {
},
selectAllClicked: function (eventInfo) {
lView.selection.selectAll();
},
clearSelection: function (eventInfo) {
lView.selection.clear();
},
selectionChanged: function (eventInfo) {
outputParagraph.innerText = lView.selection.count();
}
});
})();
Requirements
Minimum WinJS version |
WinJS 4.0 |
Namespace |
WinJS.UI |
See also
XAML ListView and GridView customizing interactivity sample (Windows)