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
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 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); } }
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
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(); }
Partager