0

Я использую kendo treeview. Мне нужно сохранить расширенное состояние treeview после перехода на ссылку treeview.Persist kendo treeview расширенное состояние на странице load

@(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); 
     } 

ответ

0

В HTML5 Вы можете использовать history.pushState() или history.replaceState() методов, когда элементы дерева расширяются или рушатся Сохранить элементы дерева состояний в истории состояниях:

history.pushState({ 
    expanded: [...] 
}, 'sometitle', '?expanded=' + ...); 

Для восстановления элементов дерева утверждает, Вы должны обрабатывать window.onpopstate события

window.onpopstate = function(event) { 
    restoreTreeItemsState(event.expanded); // your function that restores tree items states 
} 

Исключить причину изменения элементов дерева при обращении с расширением eve нт. Если элементы дерева расширяется от вашего restoreTreeItemsState функции, никаких изменений истории не требуются

https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history

В старых браузерах Вы можете использовать window.location.hash. я не использую их, но он имеет схожую функциональность и более dificult, чем история html5 permforming

1

Здесь и идти 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 функцию

+0

Telerik быть Telerik, URL поколеблется: http://docs.telerik.com/kendo-ui/controls/navigation/treeview/how-to/integration/persist-expanded -государство – Saltire

 Смежные вопросы

  • Нет связанных вопросов^_^