public static object TreeViewMoveItem(string ParentFolderId, string ItemId) { try { int id = int.Parse(ItemId.Substring(1)); int? pid = (string.IsNullOrEmpty(ParentFolderId)) ? (int?)null : int.Parse(ParentFolderId.Substring(1)); // skip move to a list if (ParentFolderId.StartsWith("s")) return new { Status = false, Message = "TREECANNOTMOVE" }; if (ItemId.StartsWith("f")) { FolderData fd = new Folders().GetFolderById(id); FolderData.TreeNodesRow tn = (FolderData.TreeNodesRow)fd.TreeNodes.Rows[0]; if ((tn.ParentFolderId != null) && pid.HasValue) new Folders().MoveFolder(pid, id); else return new { Status = false, Message = "TREECANNOTMOVE" }; } else if (ItemId.StartsWith("s")) { Surveys srv = new Surveys(); int sid; if (int.TryParse(ItemId.Substring(1), out sid)) { srv.SetFolderId(pid, sid); } } return new { Status = true, Message = string.Empty }; } catch (System.Data.SqlClient.SqlException ex) { if (ex.Message == "DUPLICATEFOLDER") return new { Status = false, Message = ex.Message }; throw; } }
private void GenerateTree() { if (((PageBase)Page).NSurveyUser.Identity.UserId == -1 || !(((PageBase)Page).NSurveyUser.HasRight(NSurveyRights.AccessSurveyList) ||((PageBase)Page).NSurveyUser.Identity.IsAdmin) ) { astvMyTree.Visible = false; return; } astvMyTree.Visible = true; FolderData folders; folders = new Folders().GetTreeNodes(((PageBase)Page).NSurveyUser.Identity.UserId); if (folders.TreeNodes.Count == 0) return; ASTreeViewDataTableColumnDescriptor descripter = new ASTreeViewDataTableColumnDescriptor("NodeName", "ItemId", "ParentFolderId"); this.astvMyTree.DataTableRootNodeValue = null; this.astvMyTree.DataSourceDescriptor = descripter; this.astvMyTree.DataSource = folders.TreeNodes; this.astvMyTree.DataBind(); string sfId = ((PageBase)Page).SelectedFolderId.HasValue ? "f" + ((PageBase)Page).SelectedFolderId.ToString() : ""; System.Collections.Hashtable h = (System.Collections.Hashtable)Session["treeCtrl"]; // set customized icons astvMyTree.EnableCustomizedNodeIcon = false; this.astvMyTree.TraverseTreeNode(this.astvMyTree.RootNode, delegate(ASTreeViewNode node) { node.Selected = false; if (node.NodeValue.StartsWith("f") && node.ParentNode ==this.astvMyTree.RootNode) { node.AdditionalAttributes.Add( new KeyValuePair<string, string>( "disableDelFolder" , "true")); } if (node.ChildNodes.Count == 0 && node.NodeValue.StartsWith("f")) { // add empty node to show folder icon and set to closed state node.AppendChild(new ASTreeViewNode("")); node.EnableOpenClose = false; node.OpenState = ASTreeViewNodeOpenState.Close; if (h != null && h.Contains(node.NodeValue)) h.Remove(node.NodeValue); } else if (node.NodeValue.StartsWith("s")) { node.AdditionalAttributes.Add( new KeyValuePair<string, string>( "disableAddFolder" , "true")); node.AdditionalAttributes.Add( new KeyValuePair<string, string>( "disableRenFolder" , "true")); //JJ If the Survey is current set it as selected node if (((PageBase)Page).getSurveyId() == int.Parse(node.NodeValue.Substring(1))) node.Selected = true; } string nv = string.IsNullOrEmpty(node.NodeValue) ? "" : node.NodeValue; // node.EnableSelection = !string.IsNullOrEmpty(nv); //JJ Set Folder as selected only if there is no current survey.If there is current survey it is set as selected if (((PageBase)Page).getSurveyId() == -1) if (!string.IsNullOrEmpty(nv) && nv == sfId) node.Selected = true; if (h != null && h[node.NodeValue] != null) node.OpenState = (ASTreeViewNodeOpenState)h[node.NodeValue]; else node.OpenState = node.ParentNode == astvMyTree.RootNode ? ASTreeViewNodeOpenState.Open : ASTreeViewNodeOpenState.Close; }); if (string.IsNullOrEmpty(sfId)) this.astvMyTree.RootNode.ChildNodes[0].Selected = true; ASTreeViewNode rootNode = this.astvMyTree.RootNode.ChildNodes[0]; rootNode.EnableDragDrop = false; /// if root node is empty we hide it if (rootNode.ChildNodes.Count == 1 && string.IsNullOrEmpty(rootNode.ChildNodes[0].NodeValue)) { // add empty node to show folder icon and set to closed state rootNode.EnableOpenClose = false; rootNode.OpenState = ASTreeViewNodeOpenState.Close; } if (h == null) StoreOpenCloseState(); }