У меня есть два 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 скрипта в один скрипт, который работает для обеих сеток?)