我试图在更改模板后根据 DropDownList 值重新绑定(bind) ListView 数据。我已经包含了一个 JSFiddle 供引用。当我当前重新绑定(bind)时,模板中的值是未定义的。
谢谢!
JSFiddle link
我在想最好的处理方法是在“选择”或“改变”功能中:
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。虽然由于数据是私有(private)的并且通过安全网络提供服务,但我无法访问它。
引用 JSFiddle:
我认为问题在于 onclick 事件获取了 data-uid 并将其传递给初始默认模板(名为“All”,但它不包含在代码中,因为它很长)。当用户更改下拉列表(cboDetailsCategory)并选择一个新模板时,我会丢失数据。
谢谢你的帮助。我真的坚持这一点,它是当前的节目终结者。
最佳答案
没有官方支持的方式来更改模板,而不破坏 ListView 并重建它。但是,如果您不介意研究一些私有 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);
关于javascript - 更改模板后如何重新绑定(bind) Kendo ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19796000/