поменять строки в datagridview в c # - PullRequest
7 голосов
/ 15 апреля 2011


У меня есть сетка данных, которая не связана с dataTable.
, и я хочу поменять местами, например, 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;
}

но я хочу знать, есть ли простой способ сделать это ??

Ответы [ 6 ]

9 голосов
/ 15 апреля 2011
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);
4 голосов
/ 16 декабря 2011

Я хотел бы прокомментировать это.

Хотя раньше можно было сделать прямой обмен в C #, как смур / Габриэльс

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 для сохранения двух строк, удаления строк и их повторной вставки.

Если кто-то знает лучший метод (так как он похож на метод из 6 строк iteslf без логики для поиска другого значения), пожалуйста, оставьте комментарий!

4 голосов
/ 15 апреля 2011

HI,
Вы пробовали:

DataGridViewRow temp =grid.Rows[row_1];
grid.Rows[row_1] = grid.Rows[row_10];
grid.Rows[row_10] = temp;
2 голосов
/ 15 апреля 2011

Попробуйте:

DataGridViewRow temp = grid.Rows[row_1].Clone();
grid.Rows[row_1] = grid.Rows[row_10].Clone();
grid.Rows[row_10] = temp;
1 голос
/ 15 апреля 2011

Так же, как дополнение:

если вам нужно чаще обмениваться, поместите метод, который вы предпочитаете больше всего, в его собственный класс и вызовите метод (например, Interchange ())

0 голосов
/ 22 февраля 2016

Этот метод отлично работает:

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);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...