我是SlickGrid的新手,但是喜欢它的外观和感觉。
我在页面上有两个SlickGrid,它们都是由后端MVC控制器的JSON馈送的。一切正常(尽管我有一个轻微的格式问题,但是我敢肯定我会弄清楚这一点)。
我希望能够在网格之间拖放...但是,该下降不会“添加”到网格,这应该会导致我的服务器上出现一个帖子,显示网格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也会触发,所以我不能依靠它。
任何想法都将是最有帮助的。
就像您知道的那样,页面上将不会只有2个网格,最终可能会有更多个网格,我希望每个网格都是可拖动的,并且每个网格都可以接受来自另一个网格的拖放。
谢谢您的帮助。
从上面继续...仍在尝试中。我曾尝试使用格式化程序,但这没有用。但是,我确实注意到了一件很奇怪的事情,那就是当我拖动的项目滞后于鼠标时,它将触发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中拖动某些东西时,感觉有点奇怪,鼠标指针始终位于要拖动的项目中。
我将继续这条路线,但是如果有人有任何其他建议可能会有所帮助,我们将不胜感激。
谢谢你。
我知道了...花了我几天时间,无奈之下来到了这里,但并没有放弃。如果有人需要它,可以发布答案,尽管如果有人有更好的方法,将不胜感激。
在目标网格中...基本上,在onMouseEnter中,将单元格的详细信息记录到全局变量中,对于我而言,我想记录RoleName。
在onMouseLeave中,将全局变量设置为null。
这样,当鼠标悬停在单元格上方时,我知道我要放哪里。但是,请记住,如果我要拖动的div,则鼠标实际上不能在div上,它必须在div之外。
目标网格占位符div已绑定...
$("#RoleTable-")
.bind("drop", function (e, dd) {
if (dd.mode != "DragUser") {
return;
}
console.log("Drop in " + dropRow);
console.log('Working with ' + dd.grid.getDataItem(dd.row).Username);
grid.invalidate();
grid.setSelectedRows([]);
});
并通过
dd.grid.getDataItem(dd.row).Username
我从源网格获取用户名。(我不确定是否需要grid.invalidate和grid.setSelectedRows ...它们可能只是我用来接近所需样本的剩余样本)。
现在,我可以继续节省钱了……但这比我对下降的沮丧感要小。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句