Listview KendoUI列表视图双击所选项目

Listview KendoUI列表视图双击所选项目,listview,kendo-ui,Listview,Kendo Ui,我试图在用户双击后从KendoUI ListItem的模板中获取名称。 我似乎找不到获取所选项目值的方法。警报将返回为未定义 <script type="text/x-kendo-tmpl" id="template"> <div class="machineInstances"> #:Name# [#:Environment#] #:Description# </div> </s

我试图在用户双击后从KendoUI ListItem的模板中获取名称。 我似乎找不到获取所选项目值的方法。警报将返回为未定义

   <script type="text/x-kendo-tmpl" id="template">
       <div class="machineInstances">
               #:Name# [#:Environment#] #:Description#
        </div>
    </script>

  $("#listView").kendoListView({
      dataSource: dataSource,
      selectable: "single"
      , dataBound: setItemDoubleClickEvent
      , template: kendo.template($("#template").html())

   });

  function setItemDoubleClickEvent() {
      var items = $(".machineInstances");
      items.dblclick(function () {
              $("#menuInstances").click();
              var selected = $("#listView").data("kendoListView").select();
              alert(selected.Name);
               alert("Double Click!");
              });
      }

#:名称#[#:环境#]#:说明#
$(“#列表视图”).kendoListView({
数据源:数据源,
可选:“单个”
,数据绑定:setItemDoubleClickEvent
,模板:kendo.template($(“#template”).html())
});
函数setItemDoubleClickEvent(){
变量项=$(“.machineininstances”);
items.dblclick(函数(){
$(“#菜单状态”)。单击();
所选变量=$(“#列表视图”).data(“kendoListView”).select();
警报(已选择。名称);
警报(“双击!”);
});
}
谢谢,


Drew

在剑道UI列表视图中,
select
不返回项目,而是返回HTML。您应该使用
index()
获取所选元素的索引,并使用
dataSource.view()
检索当前显示的元素

您的代码应该是:

function setItemDoubleClickEvent() {
    var items = $(".machineInstances");
    items.dblclick(function () {
        $("#menuInstances").click();
        var listView = $("#listView").data("kendoListView");
        var idx = listView.select().index();
        var item = listView.dataSource.view()[idx];
        alert(item.Name);
        alert("Double Click!");
    });
}
但我建议将代码简化为:

function setItemDoubleClickEvent() {
    $(".machineInstances").on("dblclick", function () {
        var listView = $("#listView").data("kendoListView");
        var idx = $(this).index();
        var item = listView.dataSource.view()[idx];
        alert(item.Name);
        alert("Double Click!");
    });
}
或者使用完全不同的策略来获得相同的结果:

var listView = $("#listView").data("kendoListView");
function setItemDoubleClickEvent() {
    $(".machineInstances", listView).on("dblclick", function () {
        var uid = $(this).data("uid");
        var item = listView.dataSource.getByUid(uid);
        alert(item.Name);
        alert("Double Click!");
    });
}
在这里,我获取双击元素的
uid
,然后使用
getByUid
检索项目数据

另外,在外部设置listView可以防止每次执行函数时都需要计算它

例如: