Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从移动服务数据源的listview获取价值_Javascript_Html_Listview_Windows 8_Winjs - Fatal编程技术网

Javascript 从移动服务数据源的listview获取价值

Javascript 从移动服务数据源的listview获取价值,javascript,html,listview,windows-8,winjs,Javascript,Html,Listview,Windows 8,Winjs,我正在使用WinJS.Binding.List()将Azure移动服务数据绑定到Listview。 如何从listview中获取所选对象的值和索引 //Javascript var table = client.getTable('PatientInfo'); var birthCertData = function () { table.read().done(function (results) { birthCert = new

我正在使用WinJS.Binding.List()将Azure移动服务数据绑定到Listview。 如何从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>

屏幕截图:

通过ListView属性感谢您

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

}

该界面为您提供了其他可用于检测选择状态的选项。请注意,事件的详细信息数据(
e.detail
)将为空,因此,如果您希望一般地获取源列表视图,可以通过
e.srcElement

访问它。这与实际问题无关,但可能对您有所帮助。
 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);
目前,您正在等待读取WAMS表的全部内容,然后才将listview的数据源设置为该全部读取表。 我建议您创建一个本地WinJS.Binding.List,立即将listview的数据源设置为它,然后在读取WAMS表时,迭代生成的数组并将结果推送到绑定列表中。
结果将与您拥有的功能相同,但它将是一种更好的模式,并允许在实际数据调用之前完成一点工作。

Hi@Jim,这意味着我应该输入:var itemsSelected=listItems.selection.getItems(e.srcElement)?不,如果您查看我粘贴的代码,该实现将仅适用于listItems DOM元素。您将无法对可能以相同方式处理不同列表视图的多个不同列表使用相同的selectionChangedHandler。如果您想拥有更多可重用/通用代码,您应该使用e.srceelement获取对导致当前事件触发的特定listView的引用:类似于e.srceelement.selection.getItems()(未测试:))抱歉@Jim,您能给我看一些通用代码吗?我尝试实现它,但失败了几个小时:(getItems()未按预期定义。)(抱歉,这里忘记了winControl…因此,如果您将参数“e”传递给selectionChanged处理程序,则涉及的特定listview将位于e.srcElement.winControl和e.srcElement.winControl.selection.getItems()应该对你有用。这次我测试了:)(使用)非常感谢@Jim。你的提示对我帮助很大!但是getItems()只返回指定列表索引的对象对键/数据对,它不返回值。但是我尝试了不同的方法。我使用了index=e.srcElement.winControl.selection.getIndexes()获取所选项目的listview的索引。然后是value。[key]=listview.getAt(index);获取值。非常感谢。感谢您的解释。这样,我就节省了很多网络资源。