繁体   English   中英

更改模板后如何重新绑定Kendo ListView

[英]How to rebind a Kendo ListView after changing template

我试图基于DropDownList值更改模板后重新绑定Listview数据。 我提供了一个JSFiddle作为参考。 当我当前重新绑定时,模板中的值是未定义的。 谢谢!

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链接和该图形的可视化

名称搜索完成且用户单击名称后显示的用户界面

这是更长的工作流程:

  1. 用户完成名称搜索,然后单击搜索按钮。
  2. 名称结果将填充在列表视图中,并使用模板分别呈现为按钮控件。
  3. 然后,用户单击名称结果之一(显示为按钮文本)。
  4. 类别的下拉列表(“全部” <-默认值,“位置”,“客户” ...)使用户能够确定要查看的数据主题。 默认为“全部”,显示有关所选名称的所有详细信息。
  5. 因此,默认情况下会填充“全部”模板。
  6. 如果用户想查看“位置”详细信息(模板),则可以从下拉列表中选择它。
  7. 模板显示,但所有值均为空白。 填充它的唯一方法是再次单击名称(按钮)。 更改模板后在模板中显示空白值

我想不需要重新单击按钮(名称)以填充模板(“位置”等)。

我整理了一个显示结构的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM