javascript - 更改模板后如何重新绑定(bind) Kendo ListView

标签 javascript listview kendo-ui kendo-treeview kendo-dropdown

我试图在更改模板后根据 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 链接和这个图形作为视觉

UI shown after name search is complete and user clicked on a name

这是一个更长的工作流程:
  • 用户完成名称搜索并单击搜索按钮。
  • 名称结果填充在 ListView 中,使用模板单独呈现为按钮控件。
  • 用户然后单击名称结果之一(显示为按钮文本)。
  • 类别的下拉列表('All' <--default 、'Location'、'Customer'...)使用户能够定位他们想要查看的数据主题。 “全部”是默认设置,显示有关所选名称的所有详细信息。
  • 因此,默认情况下会填充“全部”模板。
  • 如果用户想查看“位置”详细信息(模板),他们从下拉列表中选择它。
  • 模板显示,但值都是空白的。填充它的唯一方法是再次单击名称(按钮)。
    Showing blank values in template after template changed

  • 我想消除必须重新单击按钮(名称)来填充模板(“位置”等...)的需要。

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

    相关文章:

    android - 下载图像和更新 listView 的问题

    c# - KendoUI TreeView 中的 HierarchyId

    javascript - html5 localStorage将输入字段保存到键盘上的表单中

    javascript - 使用元素的高度更改页面滚动菜单的CSS

    javascript - 使用查询字符串搜索 AngularJS 资源

    android - 列表项从 ListView 中删除,但不从数据库中删除

    c# - Winforms:当有垂直滚动条时,如何以编程方式显示 C# ListView 中的最后一项?

    javascript - 如何清除剑道组合框的值

    asp.net-mvc - 同一页面中的 2 kendo ui Treeview 未扩展节点

    javascript - 在api上提交表单的post方法