jquery - 在页面加载时保持 Kendo Treeview 的扩展状态

标签 jquery kendo-ui treeview kendo-asp.net-mvc kendo-treeview

我正在使用 Kendo Treeview 。导航到 Treeview 链接后,我需要保持 Treeview 展开状态。

@(Html.Kendo().TreeView()
    .Name("treeview")
    .HtmlAttributes(new {@class="demo-section",@style="height:700px;" })
    .DataTextField("Name").DataUrlField("Name").DataUrlField("URL").ExpandAll(true)
    .DataSource(dataSource => dataSource
        .Read(read => read
            .Action("GetUserMenue", "UserManagement")
        )

    )

)


public ActionResult GetUserMenue(int? id)
        {
            repUser = new UserManagementRepository();

            List<UserMenue> model = repUser.getMenue(WebSecurity.GetUserId(User.Identity.Name));

            if (!id.HasValue)
            {
                var emp = from e in model
                          select new
                          {
                              id = e.PermissionID,
                              Name = e.Name,
                              URL=e.URL,
                              hasChildren = e.hasChildren
                          };

                return Json(emp, JsonRequestBehavior.AllowGet);
            }
            if (id.HasValue)
            {
                List<UserMenue> modelChild1 = repUser.getMenuLevel2(id);

                var emp = from e in modelChild1
                          select new
                          {
                              id = e.PermissionID,
                              Name = e.Name,
                              URL = e.URL

                          };

                return Json(emp, JsonRequestBehavior.AllowGet);
            }


            return Json(model, JsonRequestBehavior.AllowGet);
        }

最佳答案

你来了 Doc

主要两个功能:

function saveExpanded() {
  var treeview = $("#treeview").data("kendoTreeView");
  var expandedItemsIds = {};
  treeview.element.find(".k-item").each(function () {
    var item = treeview.dataItem(this);
    if (item.expanded) {
        expandedItemsIds[item.id] = true;
    }
  });
  Cookies.set('expanded', kendo.stringify(expandedItemsIds));
}

function setExpanded(data, expanded) {
  for (var i = 0; i < data.length; i++) {
    if (expanded[data[i].id]) {
      data[i].expanded = true;
    }
    if (data[i].items && data[i].items.length) {
      setExpanded(data[i].items, expanded);
    }
  }
}

只要确保你已经引用了这个 jquery plugin 来使用 $.cookie 函数

关于jquery - 在页面加载时保持 Kendo Treeview 的扩展状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29069792/

相关文章:

javascript - 如何在 UI 对话框中使用 PHP_SELF?

javascript - 如何使用 Kendo 菜单项模板在菜单项中加载 Treeview ?

python - GTK/ python : How to get key-press-event to edit and navigate a TreeView cell?

c# - TreeView - 只允许编辑某些节点

c# - 如何禁用 TreeView 自动第一个节点选择

javascript - addClass 在选中时更改 html 文本

javascript - 无法引用jquery

jquery - 为什么在 <li> 中具有相同高度和行高的 <a> 在 Safari 中看起来比在其他浏览器中更高,尽管使用了重置?

css - Angular 8 - Kendo TextArea 组件中的 formControlName

javascript - 模板内的按钮从不调用处理程序