public object MoveUpDown(string nodeId, TreeNodeMoveDirection direction) { TkDebug.AssertArgumentNull(nodeId, "nodeId", this); TreeUtil.SortTree(this, fTreeScheme.TreeDefinition, nodeId, direction); UpdateDatabase(); return(CreateKeyData()); }
internal static void SortTree(TableResolver resolver, DbTreeDefinition tree, string id, TreeNodeMoveDirection direct) { TkDebug.AssertArgumentNull(resolver, "resolver", null); TkDebug.AssertArgumentNull(tree, "tree", null); TkDebug.AssertArgumentNullOrEmpty(id, "id", null); IParamBuilder fixBuilder = resolver.CreateFixCondition(); IParamBuilder builder = ParamBuilder.CreateParamBuilder(fixBuilder, SqlParamBuilder.CreateEqualSql(resolver.Context, resolver.GetFieldInfo(tree.IdField), id)); IFieldInfo layerField = resolver.GetFieldInfo(tree.LayerField); string sql = string.Format(ObjectUtil.SysCulture, "SELECT {0} FROM {1}", layerField.FieldName, resolver.TableName); string layer = DbUtil.ExecuteScalar(sql, resolver.Context, builder).ToString(); string parentLayer = layer.Substring(0, layer.Length - 3); resolver.SetCommands(AdapterCommand.Update); builder = SqlParamBuilder.CreateSingleSql(resolver.Context, layerField, "LIKE", parentLayer + "___"); resolver.Select(builder, "ORDER BY " + layerField.FieldName); if (resolver.HostTable == null || resolver.HostTable.Rows.Count == 0) { return; } int rowNum = GetRowNum(resolver.HostTable, tree.IdField, id); if (rowNum == -1) { return; } //根据移动方向,执行不同操作 switch (direct) { case TreeNodeMoveDirection.Up: if (rowNum == 0) //已经最前,不能向上移动 { return; } SwapLayer(resolver, tree, rowNum, rowNum - 1); break; case TreeNodeMoveDirection.Down: if (rowNum == resolver.HostTable.Rows.Count - 1) //已经最后,不能向下移动 { return; } SwapLayer(resolver, tree, rowNum, rowNum + 1); break; } }
public object MoveUpDown(string nodeId, TreeNodeMoveDirection direction) { CorpDepartmentCollection depts = GetDepartments(); var node = depts.Department[nodeId]; var list = depts.GetChildren(node.ParentId).ToArray(); int index = Array.IndexOf(list, node); CorpDepartment swapNode = null; switch (direction) { case TreeNodeMoveDirection.Up: if (index == 0) { break; } swapNode = list[index - 1]; break; case TreeNodeMoveDirection.Down: if (index == list.Length - 1) { break; } swapNode = list[index + 1]; break; } if (swapNode != null) { node.VerifyOrder(); swapNode.VerifyOrder(); int swap = node.Order; node.Order = swapNode.Order; swapNode.Order = swap; node.Update(); swapNode.Update(); WeDataUtil.SaveData(WeCorpConst.CORP_DEPT_NAME, depts); } return(new KeyData("Id", nodeId)); }
public override OutputData DoAction(IInputData input) { try { object result; string source = input.SourceInfo.Source; string queryStringText; switch (input.Style.Operation) { case NEW_CHILD: CheckOperation(Data.TreeOperation.NewChild, "新建子节点"); queryStringText = GetQueryStringText(input, "&"); string parentId = input.QueryString[TreeOperation.IdFieldName]; if (string.IsNullOrEmpty(parentId)) { parentId = TreeOperation.RootId; } string retUrl = input.QueryString["RetUrl"]; if (string.IsNullOrEmpty(retUrl)) { retUrl = string.Empty; } else { retUrl = "&RetUrl=" + Uri.EscapeDataString(retUrl); } string childUrl = string.Format(ObjectUtil.SysCulture, "~/c/xml/insert/{0}?{1}={2}{4}{3}", source, TreeOperation.ParentFieldName, parentId, retUrl, queryStringText); return(OutputData.Create(childUrl)); case "": case null: queryStringText = GetQueryStringText(input, "?"); dynamic data = new ExpandoObject(); data.DetailUrl = string.Format(ObjectUtil.SysCulture, "c/xml/detail/{0}{1}", source, queryStringText); data.ListUrl = string.Format(ObjectUtil.SysCulture, "c/xml/list/{0}{1}", source, queryStringText); data.Source = source; data.IdField = TreeOperation.IdFieldName; data.ParentIdField = TreeOperation.ParentFieldName; data.RootId = TreeOperation.RootId; input.CallerInfo.AddInfo(data); return(OutputData.CreateObject(data)); case MOVE_NODE: CheckOperation(Data.TreeOperation.MoveNode, "移动节点"); result = TreeOperation.MoveTreeNode(input.QueryString["SourceId"], input.QueryString["DestId"]); return(OutputData.CreateToolkitObject(result)); case MOVE_UP_DOWN: CheckOperation(Data.TreeOperation.MoveUpDown, "上移和下移"); TreeNodeMoveDirection direction = input.QueryString["direction"] .Value <TreeNodeMoveDirection>(); result = TreeOperation.MoveUpDown(input.QueryString["Id"], direction); return(OutputData.CreateToolkitObject(result)); default: TkDebug.ThrowToolkitException("当前的Source不支持该操作", this); return(null); } } catch (WebPostException ex) { return(OutputData.CreateToolkitObject(ex.CreateErrorResult())); } }
public object MoveUpDown(string nodeId, TreeNodeMoveDirection direction) { CorpDepartmentCollection depts = GetDepartments(); var node = depts.Department[nodeId]; var list = depts.GetChildren(node.ParentId).ToArray(); int index = Array.IndexOf(list, node); CorpDepartment swapNode = null; switch (direction) { case TreeNodeMoveDirection.Up: if (index == 0) break; swapNode = list[index - 1]; break; case TreeNodeMoveDirection.Down: if (index == list.Length - 1) break; swapNode = list[index + 1]; break; } if (swapNode != null) { node.VerifyOrder(); swapNode.VerifyOrder(); int swap = node.Order; node.Order = swapNode.Order; swapNode.Order = swap; node.Update(); swapNode.Update(); WeDataUtil.SaveData(WeCorpConst.CORP_DEPT_NAME, depts); } return new KeyData("Id", nodeId); }
public object MoveUpDown(string nodeId, TreeNodeMoveDirection direction) { throw new NotSupportedException(); }