Bonjour à tous et à toutes,

j'utilise les librairies javascript "scriptaculous" et "Prototype" pour créer des divs "drag and dropable". Jusque là tout vas bien ...
J'utilise l'ajax control toolkit pour le redimensionnement (applicable seulement à des Panels et c'est bien dommage :s) .. là ça vas encore à peu près.

Mon problème est assez complexe :

- J'aimerais utiliser un fichier XML pour charger la position de tous mes panels au chargement de ma page.
Edit : (ça c'est bon (enfin je crois )
- Je souhaiterais qu'après que l'utilisateur ai rajouté des panels/ modifier leurs positions sur la page et qu'il appuy sur un bouton sauvegarder , que cela modifie le fichier XML en conséquence
.(c'est là que je bloque)

J'ai utilisé un Dataset :

LE FICHIER XML

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <panel>
    <ident>panel1</ident>
    <x>10px</x>
    <y>10px</y>
    <largeur>150px</largeur>
    <hauteur>150px</hauteur>
  </panel>
</NewDataSet>

Le chargement des panels par lecture du fichier XML

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
 
    public void charger_panels()
    {
        ds.ReadXml(HttpContext.Current.Server.MapPath("test.xml"));
 
 
        foreach (DataRow row in ds.Tables[0].Rows)
        {
 
                identPanel = row["ident"].ToString();
                X = row["x"].ToString();
                Y = row["y"].ToString();
                largeur = row["largeur"].ToString();
                hauteur = row["hauteur"].ToString();
 
 
                Panel P = ((Panel)Page.FindControl(identPanel));
 
 
                    P.Style.Add("top", X);
                    P.Style.Add("left", Y);
                    P.Style.Add("width", largeur);
                    P.Style.Add("height", hauteur);
 
                }
 
        }
La sauvegarde des panels au clique sur un bouton:
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
 
 
public void sauver_panels()
    {
 
        ds.ReadXml(HttpContext.Current.Server.MapPath("test.xml"));
 
        foreach (DataRow row in ds.Tables[0].Rows)
        {
 
 
                //On recupère l'identificateur du panel dans le dataset
                identPanel = row["ident"].ToString();
 
 
                Panel P = ((Panel)Page.FindControl(identPanel));
 
                //Mais là on recupère l'ancien style et pas le nouveau !
                //C'est là que ça va pas !!!
                row["x"] = P.Style["top"].ToString();
                row["y"] = P.Style["left"].ToString();
                //l'ecriture marche parfaitement
                row["largeur"] = "1200px";
                    //P.Style["width"].ToString();
                row["hauteur"] = P.Style["height"].ToString();
 
 
        }
 
 
        ds.WriteXml(HttpContext.Current.Server.MapPath("test.xml"));
        charger_panels();
 
 
    }
Le problème c'est que dans ma sauvegarde , je ne recupère pas le style courant de l'objet mais le tout premier :s