2013-03-05 66 views
1

我想創建一個函數,當某個行上的箭頭鏈接(向上或向下)單擊時,該行將向上或向下移動。Slickgrid - 用箭頭鏈接移動行

有沒有辦法以這種方式動態移動數據中的行?

(我知道還有就是RowMoveManager但要求申請箭頭鏈接,而不是拖能)

+0

是否使用與您的網格數據視圖? – idbehold 2013-03-05 23:37:22

+0

是的,我正在使用DataView – sunzyflower 2013-03-06 15:54:58

回答

1

我發現了一個辦法做到這一點,雖然它可能不是最有效的方式。我在我的數據列中有一列,並且我在箭頭moveOneUp(index)上添加了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'); 
} 
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(); 
}