begin process at 2012 05 27 06:18:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

Demande d'aide sur un Datagrid avec fichier XML externe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Demande d'aide sur un Datagrid avec fichier XML externe

mercredi 6 avril 2011 à 19:43:18 | Demande d'aide sur un Datagrid avec fichier XML externe

twinsen60

BOnjour,

Voilà, je me sers d'un code venant du site Philflash...avec un Datagrid.
Exemple PhilFlash

Celà fonctionne très bien, sauf que lorsque de créer et/ou modifie mon fichier XML, je dois l'écrire dans l'ordre.

J'aimerai pouvoir écrire mon XML dans le désordre, et l'application Flash, m'affiche ma liste, dans l'ordre, alphabétique sur la colonne "NOM"...

Comment faire ?
Car pour le moment, pour trié, je dois cliquer sur le titre de la colonne 2x...

Merci d'avance

Voici le code AS :

Code ActionScript :
import mx.utils.Delegate;
import mx.controls.gridclasses.DataGridColumn;
// -----  DataGrid -----
// Create columns for datagrid
film_dg.columnNames = ["nom", "genre", "son", "type"];
//Customization des colonnes
var col:mx.controls.gridclasses.DataGridColumn;
var totalWidth:Number = 0;
//
col = film_dg.getColumnAt(0);
col.width = 250;
col.headerText = "Nom :";
totalWidth += col.width;
//
col = film_dg.getColumnAt(1);
col.width = 150;
col.headerText = "Genre : ";
col.textAlign="center";
totalWidth += col.width;
//
col = film_dg.getColumnAt(2);
col.width = 80;
col.headerText = "Son : ";
col.textAlign="center";
totalWidth += col.width;
//
col = film_dg.getColumnAt(3);
// 18: largeur scrollbar
col.width = film_dg.width-(totalWidth+18);
col.textAlign="center";
col.headerText = "Type :";
//
film_dg.setStyle("alternatingRowColors", Array(0xFFFFFF, 0xF7F7F7));
//
// -----  Creation dynamic ComboBox -----
//
film_ds.addEventListener("afterLoaded", Delegate.create(this, doCreateDataComboBox));
function doCreateDataComboBox():Void {
	var dataProvider:Array = film_ds.items;
	var len:Number = dataProvider.length;
	var resultDP:Array = [];
	for (var i:Number = 0; i<len; i++) {
		var currentValue:String = dataProvider[i].genre;
		var found:Boolean = false;
		var maxDP:Number = resultDP.length;
		for (var j:Number = 0; j<maxDP; j++) {
			if (resultDP[j].label == currentValue) {
				found = true;
				break;
			}
		}
		// Ajout de la new value
		if (!found) {
			var newObject:Object = {label:currentValue};
			resultDP.push(newObject);
		}
	}
	// Tri du résultat DataProvider
	resultDP.sortOn("label");
	// Ajout premier item
	resultDP.unshift({label:"-- Sélectionnez un genre --"});
	// set the dataProvider for comboBox
	filter_cb.dataProvider = resultDP;
}
//
// -----  filtre pour ComboBox -----
//
filter_cb.addEventListener("change", Delegate.create(this, doChangeFilter));
function doChangeFilter(eventObj:Object):Void {
	var selectedIndex:Number = filter_cb.selectedIndex;
	var selectedItem:Object = filter_cb.selectedItem;
	var filterValue:String = selectedItem.label;
	if (selectedIndex == 0) {
		// no filtre
		film_ds.filtered = false;
	} else {
		film_ds.filtered = true;
		film_ds.filterFunc = function(item:Object) {
			return (item.genre == filterValue);
		};
	}
}

// -----  Creation dynamic ComboBox2 -----
//
film_ds.addEventListener("afterLoaded", Delegate.create(this, doCreateDataComboBox2));
function doCreateDataComboBox2():Void {
	var dataProvider:Array = film_ds.items;
	var len:Number = dataProvider.length;
	var resultDP:Array = [];
	for (var i:Number = 0; i<len; i++) {
		var currentValue:String = dataProvider[i].type;
		var found:Boolean = false;
		var maxDP:Number = resultDP.length;
		for (var j:Number = 0; j<maxDP; j++) {
			if (resultDP[j].label == currentValue) {
				found = true;
				break;
			}
		}
		// Ajout de la new value
		if (!found) {
			var newObject:Object = {label:currentValue};
			resultDP.push(newObject);
		}
	}
	// Tri du résultat DataProvider
	resultDP.sortOn("label");
	// Add the first item
	resultDP.unshift({label:"-- Sélectionnez un type --"});
	// set the dataProvider for comboBox
	filter_cb2.dataProvider = resultDP;
}
//
// -----  filtre pour ComboBox2 -----
//
filter_cb2.addEventListener("change", Delegate.create(this, doChangeFilter2));
function doChangeFilter2(eventObj:Object):Void {
	var selectedIndex:Number = filter_cb2.selectedIndex;
	var selectedItem:Object = filter_cb2.selectedItem;
	var filterValue:String = selectedItem.label;
	if (selectedIndex == 0) {
		// no filter
		film_ds.filtered = false;
	} else {
		film_ds.filtered = true;
		film_ds.filterFunc = function(item:Object) {
			return (item.type == filterValue);
		};
	}
}

//
// -----  Decode résultat XMLConnector  -----
//
film_con.addEventListener("result", Delegate.create(this, doParseData));
//
function doParseData():Void {
	var dataXML:XML = film_con.results;
	var resultArray:Array = [];
	var mainNode:XMLNode = dataXML.firstChild;
	var aNode:XMLNode = mainNode.firstChild;
	while (aNode) {
		var obj:Object = new Object();
		for (var attribute in aNode.attributes) {
			obj[attribute] = aNode.attributes[attribute];
		}
		resultArray.push(obj);
		aNode = aNode.nextSibling;
	}
	// -- utilisation items (et non dataProvider)
	film_ds.items = resultArray;
}
// -----  Start application -----
film_con.trigger();
mercredi 6 avril 2011 à 21:44:29 | Re : Demande d'aide sur un Datagrid avec fichier XML externe

pegase31

Membre Club Administrateur CodeS-SourceS
Bonjour, tu coderais en as3, tu pourrais el faire directement.
Après il te reste la possibilité de mettre chaque noeud dans un tableau et de le trier..

Peg'
mercredi 6 avril 2011 à 22:42:30 | Re : Demande d'aide sur un Datagrid avec fichier XML externe

twinsen60

Merci pour cette réponse rapide....
Mais j'y connais pas grand chose, cela donnerai quoi en AS3 si c'est pas trop demandé.

Merci d'avance.
mercredi 6 avril 2011 à 23:15:08 | Re : Demande d'aide sur un Datagrid avec fichier XML externe

pegase31

Membre Club Administrateur CodeS-SourceS
Un truc complètement différent et ça dépendrait complètement de la scructure de ton XML...

Va voir là : http://help.adobe.com/fr_FR/FlashPlatform/reference/actionscript/3/XML.html (en bas de la page)

Peg'


Cette discussion est classée dans : var, col, film, dataprovider, resultdp


Répondre à ce message

Sujets en rapport avec ce message

jeu de dessin [ par patrickgilet ] Dans un clip d'occurrence "zonedessin", j'ai limité "l'action de la souris".Normalement, on ne devrait pas pouvoir dessiner en dehors de ce cadre. Mai Appel de var d'un txt dasn un movie clip [ par Burnside ] Je n'arrrive pas a faire apparaître une variable qui se trouve dans un txt dans un movie clip.Merci,Burnside pourcentage mais pas pour tout le film svp [ par BlackEagle ] Je voudrais faire un pourcentage le temps qu'une image externe se charge...Je charge l'image externe dans un clip et je voudrais en fait que ce pourc Remplacement d'un caractère dans un STRING [ par srappaille ] Bonjour,J'ai une variable de type STRING qui se compose toujours de la même manière à savoir :var = "mot1.mot2.mot3"et j'aimerais obtenir ceci ...var Fonction EVAL [ par tombal ] J'utilise EVAL pour simplifier mes codesLorsque je met pour une variable" if (eval ("truc" + var)==3) {...}Ou bien pour un clipeval ("truc" + var).go ponctuation et accents dans une var texte [ par mikamika ] 'jour tout li monde !!! Voilà, j'ai créé une zone de texte dynamique, mais elle ne prend pas les accents et la ponctuation correctement. J'ai essayé e [FMX]Envoyer un mail avec ASP [ par flashjean ] Bonjour à tous,J'ai confectionné un *.swf comportant un petit formulaire d'inscription. Ce dernier permet à l'internaute de me faire parvenir on adres [FMX] "if" et "else if" Help! [ par flashjean ] Bonjour à tous,Ci-dessous le code de réception qui me cause problème:................................stop();if ("var_manquante", 1) { gotoAndStop (28) Un preload vraiment dynamique ?? [ par unz ] Salut,j'ai une question que me pose ma graphiste préférée :Elle a tout un stock d'animations qui n'ont pas de preload.(une bonne centaine en tout)Elle help grattflash [ par dogimo ] alors voilà mon prob, ce script est superbe et je le trouve plus sympa que les petits carrés qui partent en fadeout généralement.donc voilà mon prob :


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,278 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales