jQuery: перетаскивание в двух сетках Dev Express, но НЕ между ними - PullRequest
0 голосов
/ 17 января 2020

У меня есть два Dev Express ASPxGridView на моей ASP. Net веб-странице, каждая из которых использует Drag-and-Drop для сортировки своих записей. Записи никогда не следует перетаскивать между двумя GridView. Однако пример jQuery, предоставленный Dev Express, был предназначен только для одного GridView и не имеет никакого кода, связанного с отслеживанием того, из какого GridView произошел перетаскиваемый объект. Если пользователь перетаскивает строку из одной сетки в другую, он все равно запускает событие, которое приводит к неопределенному поведению в моем коде C# (потому что я получаю только индексы двух строк и, следовательно, не могу убедиться, что они пришло из того же GridView).

В настоящее время jQuery различает два класса CSS, "st c" для одного и "pt c" для другого. В файле ASCX для первой сетки:

<script type="text/javascript">
function stc_InitalizejQuery() {
    $('.draggable.stc').draggable({
        addClasses: false,
        helper: 'original',
        start: function (event, ui) {
            var $draggingElement = $(ui.helper);
            $draggingElement.width(gvStringTypes.GetWidth());
        }
    });
    $('.draggable.stc').droppable({
        activeClass: "hover",
        tolerance: "intersect",
        hoverClass: "activeHover",
        drop: function (event, ui) {
            var draggingSortIndex = ui.draggable.attr("SortRank");
            var targetSortIndex = $(this).attr("SortRank");
            AutoDimDefinitionControl_MakeAction(gvStringTypes, "DRAGROW|" + draggingSortIndex + '|' + targetSortIndex);
        }
    });
}
</script>    

...

<Styles>
    <Row CssClass="draggable stc"></Row>
</Styles>

И вторая идентична, за исключением того, что ".st c" -> ". Pt c" и "gvStringTypes" -> "gvPointTypes ":

<script type="text/javascript">
function ptc_InitalizejQuery() {
    $('.draggable.ptc').draggable({
        addClasses: false,
        helper: 'original',
        start: function (ev, ui) {
            var $draggingElement = $(ui.helper);
            $draggingElement.width(gvPointTypes.GetWidth());
        },
    });
    $('.draggable.ptc').droppable({
        activeClass: "hover",
        tolerance: "intersect",
        hoverClass: "activeHover",
        drop: function (event, ui) {
            var draggingSortIndex = ui.draggable.attr("SortRank");
            var targetSortIndex = $(this).attr("SortRank");
            AutoDimDefinitionControl_MakeAction(gvPointTypes, "DRAGROW|" + draggingSortIndex + '|' + targetSortIndex);
        }
    });
}
</script> 

...

<Styles>
    <Row CssClass="draggable ptc"></Row>
</Styles>

Как настроить jQuery, чтобы не запускать AutoDimDefinitionControl_MakeAction, если строка отброшена в GridView, отличном от перетаскиваемого из?

(Кроме того, возможно ли это объединить эти два jQuery скрипта в один скрипт, который работает для обеих сеток?)

1 Ответ

0 голосов
/ 17 января 2020

Следующее условие помогает:

            ...
            if (ui.draggable.hasClass('stc')) {
                AutoDimDefinitionControl_MakeAction(gvStringTypes, "DRAGROW|" + draggingSortIndex + '|' + targetSortIndex);
            }
            ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...