This question is locked. New answers and comments are not allowed.
Hi
I found an old post (http://www.telerik.com/community/forums/aspnet-mvc/treeview/treeview-databound-template.aspx) really useful and have adopted a similar approach; however, I'm also using AJAX to load child items on demand.
I cannot see how to set the LinkHtmlAttributes in my controller (for my AJAX request). LinkHtmlAttributes is readonly and set as [ScriptIgnore]; therefore when serialized to JSON, the data is lost. The data returned from my Controller Action - IEnumerable<TreeViewItem> - specify a URL but when bound to the treeview, the link performs a full postback.
Is there another way to set the LinkHtmlAttributes from a controller when returning data using JSON?
View
Controller
Many thanks,
Phil
I found an old post (http://www.telerik.com/community/forums/aspnet-mvc/treeview/treeview-databound-template.aspx) really useful and have adopted a similar approach; however, I'm also using AJAX to load child items on demand.
I cannot see how to set the LinkHtmlAttributes in my controller (for my AJAX request). LinkHtmlAttributes is readonly and set as [ScriptIgnore]; therefore when serialized to JSON, the data is lost. The data returned from my Controller Action - IEnumerable<TreeViewItem> - specify a URL but when bound to the treeview, the link performs a full postback.
Is there another way to set the LinkHtmlAttributes from a controller when returning data using JSON?
View
@(Html.Telerik().TreeView() .Name("TreeView") .BindTo<Release>(Model, (item, release) => { item.Text = release.Name; item.Value = release.ReleaseId.ToString(); item.LoadOnDemand = release.ChildReleases.Count > 0; item.Action("Dashboard", "Release", new { id = release.ReleaseId }); item.LinkHtmlAttributes.Add("data-ajax", "true"); item.LinkHtmlAttributes.Add("data-ajax-mode", "replace"); item.LinkHtmlAttributes.Add("data-ajax-update", "#mainPanel"); }) .DataBinding(dataBinding => dataBinding .Ajax() .Select("_GetChildReleases", "Release")) )Controller
[AcceptVerbs(HttpVerbs.Post)]public JsonResult _GetChildReleases(TreeViewItem node){ IEnumerable<TreeViewItem> nodes = from r in db.releases select new TreeViewItem { Text = r.Name, Value = r.ReleaseId, LoadOnDemand = (r.ChildReleases.Count > 0), Enabled = true, Url = Url.Action("Dashboard", new { id = r.ReleaseId }) }; return new JsonResult() { Data = nodes };}Many thanks,
Phil