Listview KendoUI列表视图双击所选项目
我试图在用户双击后从KendoUI ListItem的模板中获取名称。 我似乎找不到获取所选项目值的方法。警报将返回为未定义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
<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可以防止每次执行函数时都需要计算它
例如: