Bonjour,

on travaille sur une appli, dans laquelle on a besoin de glisser déposer des données dans un datagridview.

Le problème a la fermeture de l'application rien n'est sauvegardé, on voulait le sauvegarder dans un XML mais on n'arrive pas à le réimporter.

En gros on a un tableau de 980 colonnes donc on a du modifier le FillWeight des colonnes a 50 pour ne pas dépasser la limites de 65535

Pour l'export en XML on arriver la valeur des couleurs des cellules ( Grâce a un code trouvé sur msdn ) mais les problèmes sont :
- On recupere la couleur en texte (empty quand non définis et soit en RVB soit en nom de couleur[red]) mais comment dire que le BackColor de la cellule prends en valeur le contenu du XML ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
    <_x0035__x003A_10>Color [A=255, R=255, G=128, B=64]</_x0035__x003A_10>
(je récupére autant de propriété comme celle-ci qu'il y à de cellules (fichier énorme !))

- Impossible d'importer le tableau entier car la somme des fillweight dépasse 65535 donc serait il possible de passer une propriété pour dire que Column.fillWeight=50(valeur a laquelle je peux insérer 980 colonnes)

- Existe t'il un moyen pour dire que je récupere que les cellules colorés et mettre a jour le tableau sans extraire un fichier xml de 2000 lignes ?

ci join le code pour l'export en XML pris sur MSDN :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 private DataTable GetDataTableFromDGV(DataGridView dgv)
        {
            var dt = new DataTable();
            foreach (DataGridViewColumn colonne in dgv.Columns)
            {
                if (colonne.Visible)
                {
                    dt.Columns.Add(colonne.HeaderCell.Value.ToString());
                }
            }
 
            object[] cellCouleur = new object[dgv.Columns.Count];
            foreach (DataGridViewRow ligne in dgv.Rows)
            {
                for (int i = 0; i < ligne.Cells.Count; i++)
                {
 
                   cellCouleur[i] = ligne.Cells[i].Style.BackColor.ToString();
 
                }
                dt.Rows.Add(cellCouleur);
 
            }
 
            return dt;
}
//export en XML
 private void button2_Click(object sender, EventArgs e)
        {
            DataTable dT = GetDataTableFromDGV(dataGridView1);
            DataSet dS = new DataSet();
            dS.Tables.Add(dT);
            dS.WriteXml("C:\\Users\\Maxime\\Desktop\\XMLTEST.xml",System.Data.XmlWriteMode.IgnoreSchema); }
 
//IMPORT DANS LE DATAGRIDVIEW DEPUIS LE XML
 
 private void button4_Click(object sender, EventArgs e)
        {
            XmlReader xmlFile;
            xmlFile = XmlReader.Create("C:\\Users\\Maxime\\Desktop\\XMLTEST.xml", new XmlReaderSettings());
            DataSet ds = new DataSet();
            ds.ReadXml(xmlFile);
            dataGridView1.DataSource = ds.Tables[0];
        }
 
//ESSAI POUR RECUPERER UNIQUEMENT LES CELLULES COLORE (marche pas tout à fait, prends en double les cellules lorsque l'on a plusieurs lignes)    //var dt = new DataTable();
            //foreach (DataGridViewColumn colonne in dgv.Columns)
            //{
            //    if (colonne.Visible)
            //    {
            //        dt.Columns.Add(colonne.HeaderCell.Value.ToString());
            //    }
            //}
            //int t = 0;
            //object[] cellCouleur = new object[dgv.Columns.Count];
            //foreach (DataGridViewRow ligne in dgv.Rows)
            //{
            //    for (int i = 0; i < ligne.Cells.Count; i++)
            //    {
            //        if (dgv.Rows[t].Cells[i].Style.BackColor.IsEmpty == false)
            //        {
            //            cellCouleur[i] = ligne.Cells[i].Style.BackColor.ToString();
            //        }
 
            //    }
            //    dt.Rows.Add(cellCouleur);
            //    t++;
            //}
 
            //return dt;
Deplus, on est bloquer sur le fait de pouvoir faire un glisser déposé entre les cellules du dtgv, une idée ?


Merci d'avance d'avoir pris le temps de lire ce sujet aussi long soit-il