Автоматическое сохранение данных при использовании Jquery drag & drop без нажатия кнопки - PullRequest
0 голосов
/ 24 сентября 2019

Привет, я гуглю это для ответа на мою проблему, но я не могу найти правильный ответ, поэтому здесь я надеюсь, что ваша прекрасная компания может помочь мне.

У меня есть сетка в asp.net, с помощью jquery мне удалось сделать сетку перетаскиваемой и сбрасываемой, так как вы можете изменить порядок строк с помощью функций D & D.В настоящее время у меня есть кнопка обновления, которая позволяет пользователям сохранять порядок в БД (с помощью кода на стороне сервера действительно имеет значение, что такое VB, C).Все это прекрасно работает, но было бы еще лучше, если бы при удалении строки она вызывала подпрограмму на стороне сервера, которая сохраняет порядок строк (все строки), а не заставляла пользователей нажимать кнопку.

Я перепробовал много вещей, один пример, который я имел, был вызовом ajax, однако я не могу заставить это работать, знает ли кто-нибудь еще, как я могу вносить изменения прямо в базу данных путем перетаскивания без нажатия кнопки.

Мой оригинальный Jquery-метод Drag & Drop gridview

$x(function () {
           $x("[id*=gv]").sortable({
                items: 'tr:not(tr:first-child)',
                cursor: 'pointer',
                axis: 'y',
                dropOnEmpty: false,
                start: function (e, ui) {
                    ui.item.addClass("selected");
                },
                stop: function (e, ui) {
                    ui.item.removeClass("selected");
                },
                receive: function (e, ui) {
                    $x(this).find("tbody").append(ui.item);
                }
            });
        });

Затем я подумал, что смогу захватить то, что изменилось с помощью функции остановки, поэтому добавил

$x(function () {
               $x("[id*=gv]").sortable({
                    items: 'tr:not(tr:first-child)',
                    cursor: 'pointer',
                    axis: 'y',
                    dropOnEmpty: false,
                    start: function (e, ui) {
                        ui.item.addClass("selected");
                    },
                    stop: function (e, ui) {
                        ui.item.removeClass("selected");
                    var code = ui.item.attr("ID");
                    var pos = ui.item.index();
                    var options = {
                        type: "POST",
                        url: "mywebform.aspx/MyMethod",
                        data: JSON.stringify({
                            ID: code,
                            POS: pos
                        }),
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (response) {

                        }
                    };
                    $x.ajax(options);
                    },
                    receive: function (e, ui) {
                        $x(this).find("tbody").append(ui.item);
                    }
                });
            });

Затем вкод для создания функции webmethod (обратите внимание, что это было на vb.net, из-за ограничений, я в порядке, если ответ на c #)

<System.Web.Script.Services.ScriptMethod()>
<System.Web.Services.WebMethod>
Public Shared Function MyMethod(ByVal ID As String, ByVal POS As Integer) As String
    Dim a = ID & ", " & POS
    Return ""
End Function

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

1 Ответ

0 голосов
/ 24 сентября 2019

Похоже, что есть событие с именем sortupdate, которое срабатывает после обновления списка.Вы должны быть в состоянии поместить свою функцию туда, и она сработает после.

проверьте этот ответ, чтобы начать:

Вызвать событие после сортировки в JQuery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...