Как я могу заказать мое перетаскиваемое и выпадающее меню? - PullRequest
0 голосов
/ 28 августа 2018

Мой вопрос о заказе вложенного меню.

Я занимаюсь разработкой динамического меню с перетаскиваемым и выпадающим вложенным меню. Когда я перетаскиваю элемент, я могу успешно сохранить его в своей базе данных в функции onDragFinished . Кроме того, мне удалось достичь parentId и childId .

Моя проблема в том, что я не могу достичь номера заказа. Я пробовал слишком много способов, но не смог добиться успеха.

Я должен отправить номер заказа на мой контроллер через Ajax.

<script>
    $(document).ready(function () {
        $('#nestable').nestable({
            onDragFinished: function (currentNode, parentNode)  //parentId and childId
            { //Ajax
                var type = parseInt($(currentNode).data('id'));
                var type2 = parseInt($(parentNode).data('id'));
                console.log(type);
                console.log(type2);
                $.ajax({
                    method: "POST",
                    url: '@Url.Action("ChangeNodePosition","Pages")',
                    data: {
                        currentNode: type,
                        parentNode: type2
                    },
                    success: function (result) {
                        if (result == true)
                        {
                            alert("Save changes are successful");
                        }
                    }
                }).fail(function (jqXHR, textStatus, errorThrown) {
                    alert("Unable to save new list order: " + jqXHR.responseText);
                });

            }
        });

        $('#nestable-menu').on('click', function (e) {
            var target = $(e.target),
                action = target.data('action');
            if (action === 'expand-all') {
                $('.dd').nestable('expandAll');
            }
            if (action === 'collapse-all') {
                $('.dd').nestable('collapseAll');
            }
        });

        $('#draggable_list').change(function () {
            $('#nestable').toggleClass('drag_disabled drag_enabled');
        });
        $('#nestable').nestable('collapseAll');

    });
</script>

Это моя функция DragStop ,

   dragStop: function (e) {
            var list = this;
            var el = this.dragEl.children(this.options.itemNodeName).first();
            el[0].parentNode.removeChild(el[0]);
            this.placeEl.replaceWith(el);

            this.dragEl.remove();

            var $parents = $(el[0]).parents('.' + list.options.itemClass);
            var $parent = null;
            if ($parents.length > 0) $parent = $parents[0];
            list.options.onDragFinished(el[0], $parent);
            this.el.trigger('change');
            if (this.hasNewRoot) {
                this.dragRootEl.trigger('change');
            }
            this.reset();
        }

Наконец, это мой контроллер,

 [HttpPost]
        public JsonResult ChangeNodePosition(int currentNode, int? parentNode) //order number getireceğiz
        {
            Menu location = _menuService.GetByMenuId(currentNode);
            if (parentNode == null)
            {
                location.OrderNumber = location.OrderNumber + 1;
                location.ParentID = null;
                _menuService.Update(location);
            }
            else
            {
                location.OrderNumber = location.OrderNumber + 1;
                location.ParentID = parentNode;
                _menuService.Update(location);
            }
            return this.Json(true);
        }
...