public List <TreeViewNode> Nodes(string root) { CurrentUser = new SPA.User(Context.User.Identity.Name); bool IsAdmin = CurrentUser.InRole(Role.RoleType.Administrator.ToString()); // on first load, root will be 0. on subsequent requests, root will be the id of the selected tree node int nodeId = (root == "source") ? 0 : Int32.Parse(root.ToString()); int menuId = int.Parse(HttpContext.Current.Request.QueryString["menuid"].ToString()); // everything string URL = HttpContext.Current.Request.Url.ToString(); string RawURL = HttpContext.Current.Request.RawUrl; RawURL = RawURL.Replace("/~", ""); URL = URL.Replace(RawURL, ""); DataSet dsItems = new DataSet(); MenuNode node = null; // on first load, get root (parent) nodes. On subsequet requests, get children nodes dsItems = nodeId == 0 ? MenuNode.Items(menuId, nodeId, true) : MenuNode.Items(menuId, nodeId, true); List <TreeViewNode> nodes = new List <TreeViewNode>(); foreach (DataRow child in dsItems.Tables[0].Rows) { node = new MenuNode(int.Parse(child["ID"].ToString())); bool leaf = !node.HasChildren; string editLink = string.Format("{0}/_layouts/spa/pages/menunodeitem.aspx?View=Edit&ID={1}&MenuID={2}&ParentID={3}", URL, node.ID.ToString(), menuId.ToString(), node.ParentID.ToString()); string treeText = string.Format("<a href=\"{0}\" class=\"navmenulink\" title=\"{1}\" onmouseover=\"mopen('n{2}')\" onmouseout=\"mclosetime()\">{3}</a> <a id=\"n{4}\" title='Click to report as a bad link' onmouseover=\"mcancelclosetime()\" onmouseout=\"mclosetime()\" class=\"navmenunodeedit\" href=\"javascript:ModalOpen('{5}', 'Report Node', true);\">[report]</a>", node.URL, node.Description, node.ID.ToString(), node.Name, node.ID.ToString(), editLink); if (IsAdmin) { treeText = string.Format("<a href=\"{0}\" class=\"navmenulink\" title=\"{1}\" onmouseover=\"mopen('n{2}')\" onmouseout=\"mclosetime()\">{3}</a> <a id=\"n{4}\" title='Edit item' onmouseover=\"mcancelclosetime()\" onmouseout=\"mclosetime()\" class=\"navmenunodeedit\" href=\"javascript:ModalOpen('{5}', 'Edit Node', true);\">[edit]</a>", node.URL, node.Description, node.ID.ToString(), node.Name, node.ID.ToString(), editLink); } nodes.Add(new TreeViewNode() { id = node.ID.ToString(), url = node.URL, text = treeText, hasChildren = node.HasChildren, target = node.Target, classes = leaf ? "file" : "folder", }); } return(nodes); }
protected override void Fill() { try { BuildBreadcrumb(); DataView dv = new DataView(); if (txtSearch.Text == string.Empty) { gvData.EmptyDataText = "There are no items to show at this level"; dv = new DataView(MenuNode.Items(1, ItemID, false).Tables[0]); } else { gvData.EmptyDataText = Message.EMPTY_LIST_SEARCHED; dv = new DataView(MenuNode.Items(1, ItemID, false).Tables[0]); } dv.Sort = (GridSortDirection == SortDirection.Ascending) ? GridSortExpression + " ASC" : GridSortExpression + " DESC"; gvData.PageSize = GridViewPageSize; gvData.PageIndex = PageIndex; ItemCount = dv.Table.Rows.Count; if (SetupPager()) { tablePager.Visible = true; } else { tablePager.Visible = false; } gvData.DataSource = dv; gvData.DataBind(); } catch (Exception ex) { SPA.Error.WriteError(ex); if (ShowDebug) { lblErrorMessage.Text = ex.ToString(); } } }