我正在使用Slickgrid显示一个大型数据集,可以在几列到50列之间使用。我需要能够让用户按照自己的意愿对列进行重新排序,这是我目前能够做到的,但有一些不便之处。如果我碰巧抓住最后一列并将其移动到具有几个水平窗口宽度的网格的前面,我必须拖放并手动向左滚动才能将列放置在我想要的位置。
有没有人知道是否有办法强制网格根据我试图拖动列的位置自动滚动(即当我尝试将列拖动到当前网格视口之外时)?
答案 0 :(得分:1)
通过此方法查找要滚动的鼠标指针位置并应用滚动...
$('#myGrid').mousemove(function(e){ //#myGrid is id of div of grid container
var parentOffset = $(this).offset();
diffX = ( ( parentOffset.left + $('#myGrid').width() ) - e.pageX);
if (diffX < 59 && diffX > 17){ //change the minimum and maximum area where you want to scroll. mine requirement is 59 and 17. You can find your custom position by some alerting or console.log
$('.slick-viewport ').scrollLeft($('.slick-viewport ').scrollLeft() + 5);
}
});
答案 1 :(得分:1)
我最终通过在网格外创建网格列名的可排序列表来解决此问题。当列名称的顺序发生变化时,网格上显示的列将通过调用grid.setColumns()函数根据新顺序重置。