[英]How to rebind a Kendo ListView after changing template
我试图基于DropDownList值更改模板后重新绑定Listview数据。 我提供了一个JSFiddle作为参考。 当我当前重新绑定时,模板中的值是未定义的。 谢谢!
我在想最好的处理方法是在“选择”或“更改”功能中:
var cboDetailsCategory = $("#detail").kendoDropDownList({
data: [
"All",
"Customer",
"Location",
"Meter",
"Other"],
select: function (e) {
var template = $("#" + e.item.text()).html();
console.log("template", template);
$("#details").html(template);
},
change: function (e) {
},
请参考JSFiddle链接和该图形的可视化
这是更长的工作流程:
我想不需要重新单击按钮(名称)以填充模板(“位置”等)。
我整理了一个显示结构的JSFiddle。 尽管由于数据是私有数据并通过安全网络提供的,所以我无法访问它。
请参考JSFiddle:我相信问题在于onclick事件将获取数据uid并将其传递给初始默认模板(名为“ All”,但由于冗长,因此未包含在代码中)。 当用户更改下拉列表(cboDetailsCategory)并选择新模板时,我丢失了数据。
谢谢你的帮助。 我真的很坚持这一点,这是当前的表演停止者。
没有在不破坏列表视图并重建的情况下更改模板的官方支持方法。 但是,如果您不介意研究一些私人api内容(请注意,我不能保证kendo不会不告诉您就不会破坏它),您可以执行此操作
var listview = $("#MyListview").getKendoListView();
listview.options.template = templateString;
listview.template = kendo.template(listview.options.template);
//you can change the listview.altTemplate the same way
listview.refresh(); //redraws the elements
如果您想防止未知的API更改,可以执行此操作,这会增加很多开销,但是没有未知情的更改的风险(未经测试!)
var listview = $("#MyListview").getKendoListView(),
options = listview.options;
options.dataSource = listview.dataSource;
listview.destroy();
$("#MyListview").kendoListView(options);
这是解决方案,感谢大家的帮助! JSFiddle链接
问题是我在设置绑定:
$("#list").on("click", ".k-button", function (e) {
var uid = $(e.target).data("uid");
var item = dataSource.getByUid(uid);
var details = dropdown.value();
var template = $("#" + details).html();
$("#details").html(template);
kendo.bind($("#details"), item);
currentData = item;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.