Slickgrid - 使用箭头链接移动行

时间:2013-03-05 21:30:50

标签: slickgrid

我正在尝试创建一个函数,当在某一行上单击箭头链接(向上或向下)时,该行将向上或向下移动。

有没有办法以这种方式动态移动数据中的行?

(我知道有RowMoveManager但需求请求箭头链接而不是可拖动的)

2 个答案:

答案 0 :(得分:1)

我找到了一种方法,虽然它可能不是最有效的方式。我的数据中有一列,排名和我在箭头moveOneUp(索引)上添加了一个onClick函数;

function moveOneUp(rowIndex) {
        _grid.dataView.getItem(rowIndex).rank = parseInt(_grid.dataView.getItem(rowIndex).rank)-1 ;
        _grid.dataView.getItem(rowIndex-1).rank = parseInt(_grid.dataView.getItem(rowIndex-1).rank)+1;
        _grid.dataView.fastSort('rank');
}

如果有人需要其他箭头功能:

function moveOneDown(rowIndex) {
    _grid.dataView.getItem(rowIndex).rank = parseInt(_grid.dataView.getItem(rowIndex).rank)+1 ;
    _grid.dataView.getItem(rowIndex+1).rank = parseInt(_grid.dataView.getItem(rowIndex+1).rank)-1;
    _grid.dataView.fastSort('rank');
}

function moveTop(rowIndex) {
    _grid.dataView.getItem(rowIndex).rank = 0 ;
    _grid.dataView.fastSort('rank');
}


function moveBottom(rowIndex) {
    _grid.dataView.getItem(rowIndex).rank = parseInt(_grid.dataView.getLength())+1;
    _grid.dataView.fastSort('rank');
}

答案 1 :(得分:0)

function moveOneUp(rowIndex) {
    dataViewReorder.beginUpdate();
    rowIndex = rowIndex - 1;
    dataViewReorder.getItem(rowIndex).intOrd0 = parseInt(dataViewReorder.getItem(rowIndex).intOrd0) - 1;        
    dataViewReorder.getItem(rowIndex - 1).intOrd0= parseInt(dataViewReorder.getItem(rowIndex - 1).intOrd0) + 1;
    dataViewReorder.fastSort('intOrd0');

    dataViewReorder.setItems(dataReorder);
    dataViewReorder.endUpdate();

    gridReorder.setData(dataViewReorder);
    gridReorder.render();
}
function moveOneDown(rowIndex) {
    dataViewReorder.beginUpdate();
    rowIndex = rowIndex - 1;
    dataViewReorder.getItem(rowIndex).intOrd0= parseInt(dataViewReorder.getItem(rowIndex).intOrd0) + 1;
    dataViewReorder.getItem(rowIndex + 1).intOrd0= parseInt(dataViewReorder.getItem(rowIndex + 1).intOrd0) - 1;
    dataViewReorder.fastSort('intOrd0');

    dataViewReorder.setItems(dataReorder);
    dataViewReorder.endUpdate();

    gridReorder.setData(dataViewReorder);
    gridReorder.render();
}