Devexpress gridview基于多个选定行上下移动多行

时间:2018-07-17 08:06:19

标签: gridview devexpress devexpress-gridcontrol

我有一个gridview,我们为用户提供移动行的选项,当前仅允许上下移动1行(单击按钮并拖放)。

我们需要为用户提供基于多选中所选行移动多行的可能性,是否有移动多行的示例?

在当前情况下,我们使用对网格进行排序的数据库列(排序),我可以使用foreach将所有选定行更新为+1或-1,但是我该如何处理未选定的行呢?

1 个答案:

答案 0 :(得分:0)

如果标准Drag And Drop Behavior不符合您的要求,您可以在此处找到有关如何手动移动行的示例代码:

https://github.com/DevExpress-Examples/how-to-reorder-grid-rows-by-drag-and-drop-e764

您需要选择一个较旧的分支,例如7.2.1。这是此示例中的相应代码:

private void MoveRow(int sourceRow, int targetRow)
    {
        if ( sourceRow == targetRow || sourceRow == targetRow + 1 )
            return;

        GridView view = gridView1;
        DataRow row1 = view.GetDataRow(targetRow);
        DataRow row2 = view.GetDataRow(targetRow + 1);
        DataRow dragRow = view.GetDataRow(sourceRow);
        decimal val1 = (decimal)row1[OrderFieldName];
        if ( row2 == null )
            dragRow[OrderFieldName] = val1 + 1;
        else
        {
            decimal val2 = (decimal)row2[OrderFieldName];
            dragRow[OrderFieldName] = (val1 + val2) / 2;
        }
    }

如您所见,您可以使用十进制而不是int,因此完全避免处理未选择的行。