从移动服务数据源的列表视图中获取价值

Getting Value from listview from Mobile Service DataSource

本文关键字:获取 视图 列表 移动 服务 数据源      更新时间:2023-09-26

我使用WinJS.Binding.List()将Azure Mobile Service数据绑定到Listview。我如何从列表视图中获得所选的值和索引?

//Javascript
var table = client.getTable('PatientInfo');
var birthCertData = function () {
            table.read().done(function (results) {
                   birthCert = new WinJS.Binding.List(results);
                   listItems.winControl.itemDataSource = birthCert.dataSource;
               });
        };
function selectionChangedHandler() {
//what should I type here to get the selectedCell Value and index?
        }
        listItems.addEventListener("selectionchanged", selectionChangedHandler, false);
这是我的html
<div id="TemplateItem" data-win-control="WinJS.Binding.Template" style="display: none">
   <div style="display: -ms-grid; -ms-grid-columns: auto 1fr">
      <div style="-ms-grid-column: 2; margin-left: 5px; height: 40px; text-align: center; vertical-align: middle">
        <h3 data-win-bind="innerText: birthcert"></h3>
      </div>
   </div>
</div>
<div id="listItems" class="win-selectionstylefilled" 
     data-win-control="WinJS.UI.ListView"
     data-win-options="{ itemTemplate: select('#TemplateItem'), 
     layout: {type: WinJS.UI.ListLayout}, 
     selectionMode: 'single', 
     tapBehavior: 'directSelect'}">
</div>
 <div style="margin: 5px 0px 0px 72px; -ms-grid-column: 2">
    <input type="text" id="textInput" />
 </div>

截图:https://i.stack.imgur.com/Di0BP.png

谢谢

通过ListView的选择属性

function selectionChangedHandler(e) {
    var numItemsSelected = listItems.selection.count;
    var indicesSelected = listItems.selection.getIndices();
    var itemsSelected = listItems.selection.getItems();
    ...
}

isselection接口为您提供了用于检测选择状态的其他选项。请注意,事件的详细数据(e.detail)将为null,因此,如果您想一般地获取源ListView,您可以通过e.srcElement

获得它。

这与实际问题无关,但可能对您有所帮助。目前,您正在等待读取WAMS表的整个内容,然后才将listview的数据源设置为整个读取表。我建议您创建一个本地的WinJS.Binding。列表,立即将listview的数据源设置为它,然后在读取WAMS表时,迭代结果数组并将结果推入Binding List。结果将与您所拥有的相同,但它将是一个更好的模式,并且允许在实际的数据调用之前完成一些工作。

 function selectionChangedHandler(e) {
                // get the index of the selected listview item
                var index= e.srcElement.winControl.selection.getIndices();
                // get the object of the selected index
                var odata = birthcert.getAt(test);
                //odata.[key] is the value of the selected listview's item.
            }
            listItems.addEventListener("selectionchanged", selectionChangedHandler, false);