Я новичок в SlickGrid, но любя, как он выглядит и чувствует.Перетаскивание из одного slickgrid в другое на той же странице
У меня есть две SlickGrids на странице, которые оба передаются JSON с контроллера MVC на задней панели. Это работает нормально (хотя у меня небольшая проблема с форматированием, но я уверен, что я это проиграю).
Я хочу, чтобы иметь возможность перетаскивать между сетками ... однако, падение не «добавляет» к сетке, оно должно вызывать сообщение на моем сервере, показывающее, что из сетки 1 было сброшено на то, что из сетка 2. Представьте, что вы ...
Первая сетка имеет список пользователей Вторая сетка имеет список ролей.
Я хотел бы бросить пользователя на роль, а затем отправить обратно на сервер, который был сброшен на какую роль. (Он также будет работать другим способом ... отбросить роль пользователя, дать пользователю роль - тот же результат, другое падение)
После https://github.com/mleibman/SlickGrid/blob/gh-pages/examples/example9-row-reordering.html, у меня есть отчасти работа. Мне потребовалось некоторое время, чтобы даже зайти так далеко. Я могу перетащить из одной сетки, но абсолютно НЕ ИДЕЯ о том, как заставить вторую сетку принять падение, неважно, как вторая сетка может даже сказать, что было сброшено с первого.
Как заставить вторую сетку принять каплю? Как получить информацию о том, что было удалено?
В JS для сетки, что я пытаюсь зайти в, у меня есть ...
rolegrid.onMouseEnter.subscribe(function (e) {
var cell = rolegrid.getCellFromEvent(e);
console.log('-' + cell.row);
//grid.setSelectedRows([cell.row]);
dropRow = roleslickdata[cell.row].RoleName;
console.log(cell.row + ' : ' + roleslickdata[cell.row].RoleName);
e.stopPropagation();
});
rolegrid.onMouseLeave.subscribe(function (e) {
var cell = rolegrid.getCellFromEvent(e);
console.log('OUT-' + cell.row);
//grid.setSelectedRows([cell.row]);
dropRow = null;
console.log('Leaving ' + cell.row + ' : ' + roleslickdata[cell.row].RoleName);
e.stopPropagation();
});
rolegrid.onDragEnd.subscribe(function (e) {
var cell = rolegrid.getCellFromEvent(e);
console.log('DragEnd-' + cell.row);
//grid.setSelectedRows([cell.row]);
e.stopPropagation();
});
... Теперь onDragEnd не по всей видимости, стрельба, я предполагаю, что это происходит потому, начало запуска не начинается здесь.
OnMouseEnter и onMouseLeave кажутся прерывистыми при стрельбе ... и в тот самый момент, когда onMouseEnter срабатывает, onMouseLeave также срабатывает, поэтому я не могу положиться на это.
Любые идеи вообще были бы наиболее полезными.
Как вы знаете, это не будет всего две сетки на странице, в конечном счете, может быть много больше, и я хочу, чтобы каждый из них был перетаскиваемым, и каждый из них принимал падение из другой сетки.
Благодарим за помощь.
Следующее сверху ... все еще экспериментирует. Я пробовал использовать форматтер, но это не сработало. Однако я заметил что-то довольно странное, потому что когда элемент, который я перетаскивал, отставал от мыши, он запускал события onMouseEnter и onMouseLeave ... это стало причиной прерывистого поведения. (У меня был указатель мыши 10px внутри верхнего/левого элемента, который я перетаскивал).
Таким образом, изменение ...
grid.onDrag.subscribe(function (e, dd) {
dd.helper.css({ top: e.pageY - 5, left: e.pageX - 10 });
});
иметь e.pageX + 10, я мог бы получить OnMouseEnter и OnMouseLeave стрелять почти каждый раз. Тем не менее, я не думаю, что это идеальный вариант ... поскольку это немного странно, когда вы перетаскиваете что-то в Windows, указатель мыши всегда находится внутри объекта, который вы перетаскиваете.
Я продолжу на этом маршруте, но если у кого есть какие-либо дополнительные предложения, которые могут помочь, это будет оценено.
спасибо.
Пример jsfiddle вашего решения для перетаскивания/переноса между сетками будет очень удобным :) –
К сожалению, у меня была эта проблема некоторое время назад, и с тех пор я резко изменил ее, плюс есть много фона JS, должны вырваться, чтобы сделать что-то разумное на JSFiddle (кроме того, я никогда не создавал страницу JSFiddle). Здесь достаточно информации, хотя вы можете пройти. Это пример использования примера в ссылке в моем вступительном сообщении, а затем интерпретация того, что я написал. Я не знаю, есть ли у SO личный обмен сообщениями (поскольку я не всегда здесь), но если это так, сообщите мне, что у вас есть, и тогда вы могли бы создать jsfiddle с моей помощью. – David