mais je veux savoir s'il y a un moyen simple de le faire ?? p> p>
J'ai un DataGridView qui n'est pas lié à DataTable.
Et je veux échanger par exemple les 1er et 10ème rangées dans DataGridView.
J'utilise ce code pour cela
6 Réponses :
salut,
Avez-vous essayé:
DataGridViewRow temp =grid.Rows[row_1]; grid.Rows[row_1] = grid.Rows[row_10]; grid.Rows[row_10] = temp;
Je reçois le message suivant: DataGridViewrowCollection.Cet [int] ne peut pas être attribué - il est lu que
Essayez:
DataGridViewRow temp = grid.Rows[row_1].Clone(); grid.Rows[row_1] = grid.Rows[row_10].Clone(); grid.Rows[row_10] = temp;
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);
Tout comme Ajout: p>
Si vous avez besoin de l'échange plus souvent, placez la méthode ci-dessus que vous préférez la plupart dans sa propre classe et appelez la méthode (E.G. Interchange ()) P>
Je voulais commenter cela.
Pendant qu'il - il a été possible de faire un échange droit en C # avant, comme Smoore / Gabriels - P>
DataGridViewRow temp = grid.Rows[row_1].Clone(); grid.Rows[row_1] = grid.Rows[row_10].Clone(); grid.Rows[row_10] = temp;
Cette méthode fonctionne bien:
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); } }
Ce n'est pas bon, vous n'avez pas besoin d'appeler
valeur.tostring () code> et ainsi de suite, stockez simplement la valeur dans un objet. Ce sera générique, contrairement à votre code, qui ne fonctionne que avec des chaînes.