2

我试图允许在两个不同的网格中拖放重新排名。

这似乎在 RC1 中不起作用(尽管在同一个网格内确实有效),所以我正在尝试自己跨网格进行拖放排名。

这似乎相当简单,我只是补充一下:

viewConfig: {
            plugins: {
                  ptype: 'gridviewdragdrop',
                  dragGroup: dd1,
                  dropGroup: dd2
            }
}

现在我可以跨网格拖放(尽管它不完全遵循 Rally 样式指南)。不幸的是,仅此一项并不能保存结果。为此,我需要定义一个 drop 监听器:

            listeners: {
                  drop: function(node, data, dropRec, dropPosition) {
                      var dropOn = dropRec ? ' ' + dropPosition + ' ' + dropRec.get('ObjectID') : ' on empty view';

                      console.log('Dropped ' + data.records[0].get('ObjectID') + dropOn);

                }
              }

但是我如何重新排列丢弃的记录?通过检查拉力赛在正常积压上的运作方式,看起来拉力赛 WSAPI 中有“rankAbove”和“rankBelow”命令,但我将如何在我的 drop 函数中调用它们?如果我只是更新一个常规字段,我想我可以调用record.set(),但是为了排名,我需要进行这些特殊调用之一,并且给定记录我不知道怎么做。

4

1 回答 1

1

很好的工作在网格之间连接拖放!对于排名,您可能希望查看Rally.data.Ranker Singleton。它被定义为私有。它用于 Rally.ui.grid.Grid 的Drag'n'Drop Ranking插件

使用 Ranker,您可以实现类似于以下示例的内容(当然要根据您自己的环境进行调整):

listeners: {
drop: function(node, dragData, droppedOnRec, dropPosition) {
    var draggedRec  = dragData.records[0];

    var dropOn = droppedOnRec ? ' ' + dropPosition + ' ' + droppedOnRec.get('FormattedID') : ' on empty view';

    console.log('Dropped ' + draggedRec.get('FormattedID') + dropOn);

    if (draggedRec && droppedOnRec) {
        console.log("what is this?", this.title, this.releaseRef, dropPosition, droppedOnRec);

        draggedRec.set('Release', this.releaseRef);

        Rally.data.Ranker.rankRelative({
            recordToRank: draggedRec,
            relativeRecord: droppedOnRec,
            position: dropPosition,
            saveOptions: {
                callback: function() {console.log('saved');}
            }
        });
    } else {
        console.log('no drop', draggedRec, droppedOnRe, dropPosition);
    }
},
于 2013-07-09T15:22:27.327 回答