:D
Mon architecture logicielle impose que je garde le DGV1 sans copiage la première fois et puis je copie de DGV2 quand je coche un checkbox sinon je garde DGV1.
C'est un peu compliqué et j'ai besoin de ne pas mélanger les sources.
Merci !
Version imprimable
:D
Mon architecture logicielle impose que je garde le DGV1 sans copiage la première fois et puis je copie de DGV2 quand je coche un checkbox sinon je garde DGV1.
C'est un peu compliqué et j'ai besoin de ne pas mélanger les sources.
Merci !
Si :
- Tu n'as pas besoin de garder les données d'origine tel quel
- Tu n'as pas besoin d'annuler ton Merge
- Tu ne supprimes pas les lignes que t'as "Merge" de ton DGV2
=> Je ne vois toujours pas l'intérêt de garder ton DGV1 intact ! :)
Mais sinon, dans l'absolu, j'ajouterai une 3ème DataTable qui gardera les données de la DataSource de DGV1 intactes avant le "Merge".
Dis-toi que le DataGridView n'est qu'une représentation des données : cela peut être très dangereux de modifier/supprimer des données à partir des lignes du DataGridView (DataGridViewRow).
(C'est comme ça que je le vois ^^)
:roll:
Mais si, j'ai besoin de garder mon DGV2 à chaque fois comme il est.
J'ai besoin d'utiliser mon DGV1 au début puis créer d'autre DGV (DGV2,3....) puis à chaque fois les copier dans DGV1.
C'est très important pour moi de ne pas faire ça en passant par les sources. :D:D
J'utilise ce code mais ça ne marche pas :?
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 List<int> visibleColumns = new List<int>(); foreach (DataGridViewColumn col in dataGridView2.Columns) { if (col.Visible) { dataGridView1.Columns.Add((DataGridViewColumn)col.Clone()); visibleColumns.Add(col.Index); } } // Now add the data from the columns // Set a counter for the current row index for the second DataGridView int rowIndex = 0; foreach (DataGridViewRow row in dataGridView2.Rows) { // Add a new row to the DataGridView dataGridView1.Rows.Add(); // Loop through the visible columns for (int i = 0; i < visibleColumns.Count; i++) { // Use the index of the for loop for the column in the target data grid // Use the index value from the List<T> for the cell of the source target data grid dataGridView1.Rows[rowIndex].Cells[i].Value = row.Cells[visibleColumns[i]].Value; } // Increment the rowIndex rowIndex++; }
j'utilise ce code qui marche que quand : dataGridView1.dataSource=null;
Le problème avec DataGridView est qu'on ne peut pas l'utiliser (copier) quand il est relié à une source de données.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 if (dataGridView1.ColumnCount == 0) { foreach (DataGridViewColumn dgvc in dataGridView2.Columns) { dataGridView1.Columns.Add(dgvc.Clone() as DataGridViewColumn); } } DataGridViewRow row = new DataGridViewRow(); // Adding Rows in datagridview2 for (int i = 0; i < dataGridView2.Rows.Count; i++) { row = (DataGridViewRow)dataGridView1.Rows[i].Clone(); int intColIndex = 0; foreach (DataGridViewCell cell in dataGridView2.Rows[i].Cells) { row.Cells[intColIndex].Value = cell.Value; intColIndex++; } dataGridView1.Rows.Add(row); }
Pourriez-vous m'aider SVP?
A part copier les différentes DataTables pour en garder une trace, je ne vois pas comment faire :P
Je peux :
- créer une colonne dans un DataGridView et mettre dessus des données.
- copier les colonnes d'un dgv vers un autre vide.
- cloner des colonnes d'un DGV.
Pourquoi ça ne serait pas possible de copier les colonnes d'un DGV non vide à un autre DGV (non vide)? :D
J'ai essayé d'utiliser la méthode ou je change les sources. Mais, ça ne mets pas à jour mon DGV.
:lol:Code:dataTable1.Merge(sqlDataSet.Tables[0]);