Beispiel #1
0
        public object MoveUpDown(string nodeId, TreeNodeMoveDirection direction)
        {
            TkDebug.AssertArgumentNull(nodeId, "nodeId", this);

            TreeUtil.SortTree(this, fTreeScheme.TreeDefinition, nodeId, direction);
            UpdateDatabase();
            return(CreateKeyData());
        }
Beispiel #2
0
        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;
            }
        }
Beispiel #3
0
        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();
 }