我有一个与dataTable无关的datagridview
我想交换datagridview中的第1行和第10行
我使用这个代码
int row_1 = 1;
int row_10 = 10;
for(int i=0;i<grid.ColumnCount;i++)
{
string temp = grid.Rows[row_1].Cells[i].Value.ToString();
grid.Rows[row_1].Cells[i].Value = grid.Rows[row_10].Cells[i].Value.ToString();
grid.Rows[row_10].Cells[i].Value = temp;
}
但我想知道有没有简单的方法来做到这一点?
答案 0 :(得分:9)
var r10 = grid.Rows[9];
var r1 = grid.Rows[0];
grid.Rows.Remove(r1);
grid.Rows.Remove(r10);
grid.Rows.Insert(0, r10);
grid.Rows.Insert(9, r1);
答案 1 :(得分:4)
HI,
你试过了吗?
DataGridViewRow temp =grid.Rows[row_1];
grid.Rows[row_1] = grid.Rows[row_10];
grid.Rows[row_10] = temp;
答案 2 :(得分:4)
我想对此发表评论。
虽然可能之前可以在C#中进行直接交换,比如smoore / Gabriels -
DataGridViewRow temp = grid.Rows[row_1].Clone();
grid.Rows[row_1] = grid.Rows[row_10].Clone();
grid.Rows[row_10] = temp;
这不再可能,因为grid.Rows [index]是只读的。
相反,使用DarkSquirrels方法保存两行,删除行,然后重新插入它们。
如果有人知道更好的方法(因为这就像iteslf的6行方法而没有找到其他值的逻辑),请做评论!
答案 3 :(得分:2)
尝试:
DataGridViewRow temp = grid.Rows[row_1].Clone();
grid.Rows[row_1] = grid.Rows[row_10].Clone();
grid.Rows[row_10] = temp;
答案 4 :(得分:1)
同样是补充:
如果你需要更频繁地交换,把你最喜欢的方法放在它自己的类中并调用方法(例如Interchange())
答案 5 :(得分:0)
此方法可以正常工作:
private static void SwapRows(DataGridView grid, int row1, int row2)
{
if (row1 != row2 && row1 >= 0 && row2 >= 0 && row1 < grid.RowCount && row2 < grid.RowCount)
{
var rows = grid.Rows.Cast<DataGridViewRow>().ToArray();
var temp = rows[row1];
rows[row1] = rows[row2];
rows[row2] = temp;
grid.Rows.Clear();
grid.Rows.AddRange(rows);
}
}