我有一个gridview,我们为用户提供移动行的选项,目前只有上下移动1行的可能性(在按钮单击和拖放时)。
我们需要让用户可以根据多选中的选定行移动多行,有没有移动多行的例子?
在当前情况下,我们使用对网格进行排序的数据库列(排序),我可以使用 foreach 将所有选定的行更新 +1 或 -1,但我如何处理未选定的行?
我有一个gridview,我们为用户提供移动行的选项,目前只有上下移动1行的可能性(在按钮单击和拖放时)。
我们需要让用户可以根据多选中的选定行移动多行,有没有移动多行的例子?
在当前情况下,我们使用对网格进行排序的数据库列(排序),我可以使用 foreach 将所有选定的行更新 +1 或 -1,但我如何处理未选定的行?
如果标准拖放行为不符合您的要求,您可以在此处找到有关如何手动移动行的示例代码:
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;
}
}
如您所见,您可以使用 decimal 而不是 int,因此根本避免处理未选择的行。