Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-04-2011, 09:23   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2011
Beiträge: 7
If- Anweisung für Vergleich zwischen Liste und Datagrid

Hallo ich wollte fragen wie man am besten eine IF-Anweisung schreibt, um zu überprüfen ob der Name in der Tabelle vorhanden ist, bevor es über ein popup in eine Liste eingetragen(editiert) wird.

hier mein bisheriger Versuch

Code:
<mx:Script>
		<![CDATA[
			import com.crossmedia_solutions.mamBackendConfig.vo.ConversionTypesTypeVO;
			import com.crossmedia_solutions.mamBackendConfig.vo.ConversionTypesVO;
			import com.crossmedia_solutions.mamBackendConfig.vo.FileConversionSettingsVO;
			import com.crossmedia_solutions.mamBackendConfig.vo.MAMBackendConfigVO;
			import com.crossmedia_solutions.mamBackendConfig.vo.SetupDefinitionVO;
			import com.crossmedia_solutions.mamBackendConfig.vo.SetupVO;
			import com.crossmedia_solutions.mamBackendConfig.vo.TypeVO;
			
			import mx.controls.Alert;
			import mx.managers.PopUpManager;
			
			import views.ConversionTypesView;
			
			[Bindable]public var setupVO:SetupVO;
			[Bindable]public var conversiontypestypeVO:ConversionTypesTypeVO;
			
			private function close():void {
				PopUpManager.removePopUp(this);
			}
			
			
			
			protected function edit_clickHandler(event:MouseEvent):void
			{
			
					if(setupVO.nameValue != conversiontypestypeVO.value){
						Alert.show("Der Name ist nicht vorhanden.");
						return;
				}
					
				setupVO.nameValue = nameCol.text;
				setupVO.availableVO.value = (avaibleCol.selected)?"true":null;
				setupVO.descriptionVO.value = descriptionCol.text;
				setupVO.templateVO.value = templateCol.text;
				setupVO.typeVO.value = typeCol.text;
				setupVO.setupDefinitionVO.locationFilesystemVO.value = (location_filesystemCol.selected)?"true":null;
				setupVO.setupDefinitionVO.mimetypeFallbackVO.value = (mimetype_fallbackCol.selected)?"true":null;
				setupVO.setupDefinitionVO.databinaryMimetypeVO.value = databinary_mimetypeCol.text;
				setupVO.setupDefinitionVO.fileExtensionVO.value = file_extensionnCol.text;
				setupVO.setupDefinitionVO.databinaryCachecontrolVO.value = databinary_cachcontrolCol.text;
				
				close();
				
			}
			
		]]>
	</mx:Script>
Falls jemand das gesamte Projekt braucht um mehr Überblick zu haben hier:

kostenlos Dateien hochladen bei File Upload X

Danke im Vorraus

Gruß

Max

Geändert von Max91 (12-04-2011 um 10:21 Uhr)
Max91 ist offline   Mit Zitat antworten
Alt 12-04-2011, 10:03   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Das kann man über eine Filterfunktion regeln. Ich hab mal einen Test dafür geschrieben um zu zeigen, wie das so funcktioniert
ActionScript:
  1. package
  2. {
  3.     import flexunit.framework.Assert;
  4.     import flexunit.framework.TestCase;
  5.  
  6.     import mx.collections.ArrayCollection;
  7.     import mx.collections.ICollectionView;
  8.  
  9.     public class ListCollectionViewFilterTest extends TestCase
  10.     {
  11.         public function ListCollectionViewFilterTest()
  12.         {
  13.         }
  14.  
  15.         [Test]
  16.         public function testFilterFunction():void
  17.         {
  18.             const source:Array = [
  19.                 {name:"Fred"},
  20.                 {name:"Barney"},
  21.                 null,
  22.                 {noName:""}
  23.             ];
  24.  
  25.             const collectionView:ICollectionView = new ArrayCollection(source);
  26.             const propertyName:String = "name";
  27.             const name:String = "Fred";
  28.             const simpleNameFilter:Function = function(o:Object):Boolean
  29.             {
  30.                 return o && o.hasOwnProperty(propertyName) && o[propertyName] == name;
  31.             };
  32.  
  33.             // No filter was applied yet, the length shouldn't have changed.
  34.             Assert.assertTrue(collectionView.length === 4);
  35.  
  36.             // Applying the filter function.
  37.             collectionView.filterFunction = simpleNameFilter;
  38.  
  39.             // Since we haven't refreshed the collection, the length shouldn't have changed.
  40.             Assert.assertTrue(collectionView.length === 4);
  41.  
  42.             // Refresh the collection, in order to find specific items
  43.             collectionView.refresh();
  44.  
  45.             // As expected, the length has changed, after the filter function was applied refreshing the collection.
  46.             Assert.assertTrue(collectionView.length === 1);
  47.  
  48.             // Remove the filter function, but don't expect the length to be changed
  49.             collectionView.filterFunction = null;
  50.  
  51.             // As expected, the state of the collection view hasn't changed.
  52.             Assert.assertTrue(collectionView.length === 1);
  53.  
  54.             // Refresh the collection view, in order to go back to the original state
  55.             collectionView.refresh();
  56.  
  57.             // All items are found
  58.             Assert.assertTrue(collectionView.length === 4);
  59.         }
  60.  
  61.     }
  62. }
Omega Psi ist offline   Mit Zitat antworten
Alt 12-04-2011, 10:32   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2011
Beiträge: 7
Ich glaube man kann das auch mit einer for schleife machen, sodas es im datagrid durchläuft und prüft ob der Name vorhanden ist.Nur weiß ich nicht genau wie man die for Schleife dafür schreibt, kann auch sein das ich falsch liege.
Max91 ist offline   Mit Zitat antworten
Alt 12-04-2011, 10:44   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Ja, das geht auch:
Code:
private function listHasItemWithPropertyOfValue(list:IList, propertyName:String, value:String):Boolean
{
	var o:Object;
	for (var i:int; i < list.length; i++)
	{
		o = list.getItemAt(i);
		if (o && o.hasOwnProperty(propertyName) && o[propertyName] == value)
		{
			return true;
		}
	}
	return false;
}
Das ganze geht natürlich auch flexibler oder noch hartgecodeter.
Omega Psi ist offline   Mit Zitat antworten
Alt 13-04-2011, 07:48   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2011
Beiträge: 7
mit flexibler meinst du wohl die Filterfuktion oder gibt es noch eine flexiblere methode?
Max91 ist offline   Mit Zitat antworten
Alt 13-04-2011, 10:50   #6 (permalink)
Neuer User
 
Registriert seit: Mar 2011
Beiträge: 7
Ich habs jetzt so gemacht aber er bleibt immer auf false. Er findet irgentwie den Wert nicht obwohl der eigentlich vorhanden ist. Worin könnte der Fehler
liegen?

Code:
			protected function edit_clickHandler(event:MouseEvent):void
			{
				var found:Boolean  = false;
				for (var i:int = 0; i < conversion_typesList2.length; i++) 
				{
					if(setupVO.nameValue == conversiontypestypeVO.value){
						found= true;
						break;

					}
				}
				if(found == false){
					Alert.show("Der Name ist nicht vorhanden.");
				}
				if(found == true){
					
					setupVO.nameValue = nameCol.text;
					setupVO.availableVO.value = (avaibleCol.selected)?"true":null;
					setupVO.descriptionVO.value = descriptionCol.text;
					setupVO.templateVO.value = templateCol.text;
					setupVO.typeVO.value = typeCol.text;
					setupVO.setupDefinitionVO.locationFilesystemVO.value = (location_filesystemCol.selected)?"true":null;
					setupVO.setupDefinitionVO.mimetypeFallbackVO.value = (mimetype_fallbackCol.selected)?"true":null;
					setupVO.setupDefinitionVO.databinaryMimetypeVO.value = databinary_mimetypeCol.text;
					setupVO.setupDefinitionVO.fileExtensionVO.value = file_extensionnCol.text;
					setupVO.setupDefinitionVO.databinaryCachecontrolVO.value = databinary_cachcontrolCol.text;
					
					close();
				}
			}
Max91 ist offline   Mit Zitat antworten
Alt 13-04-2011, 11:53   #7 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Ich verstehe nicht so ganz, worauf das alles hinausläuft, versuche aber mal, da etwas List ins Dunkel zu bringen:
Code:
			protected function edit_clickHandler(event:MouseEvent):void
			{
				var found:Boolean  = false;
				const length:uint = conversion_typesList2.length;
				for (var i:int = 0; i < length; i++) 
				{
					var type:ConversionTypesTypeVO = conversion_typesList2.getItemAt(i);

					if(setupVO.nameValue == type.value){
						setupVO.nameValue = nameCol.text;
						setupVO.availableVO.value = (avaibleCol.selected)?"true":null;
						setupVO.descriptionVO.value = descriptionCol.text;
						setupVO.templateVO.value = templateCol.text;
						setupVO.typeVO.value = typeCol.text;
						setupVO.setupDefinitionVO.locationFilesystemVO.value = (location_filesystemCol.selected)?"true":null;
						setupVO.setupDefinitionVO.mimetypeFallbackVO.value = (mimetype_fallbackCol.selected)?"true":null;
						setupVO.setupDefinitionVO.databinaryMimetypeVO.value = databinary_mimetypeCol.text;
						setupVO.setupDefinitionVO.fileExtensionVO.value = file_extensionnCol.text;
						setupVO.setupDefinitionVO.databinaryCachecontrolVO.value = databinary_cachcontrolCol.text;
					
						close();
						break;
					}
				}
			}
Du hast nicht über die Liste iteriert. Ob das nun sein soll oder muss, weiss ich nicht.

PS: die VO Suffice kannst/solltest du bei den Properties weglassen.
Omega Psi ist offline   Mit Zitat antworten
Alt 13-04-2011, 12:19   #8 (permalink)
Neuer User
 
Registriert seit: Mar 2011
Beiträge: 7
der meldet mir dann folgende Fehlermeldung:


Zitat:
Beschreibung Pfad Ressource Position Typ
1118: Implizite Umwandlung von einem Wert mit statischem Typ Object in einen möglicherweise nicht verwandten Typ com.crossmedia_solutions.mamBackendConfig.vo:Conve rsionTypesTypeVO. /Projekt/src/Popups ConversionSetupsPopup.mxml Zeile 34 Flex-Problem
Max91 ist offline   Mit Zitat antworten
Alt 13-04-2011, 12:20   #9 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Ich rate auch, was in der Liste drin ist. Du musst meine Idee schon mit deinem Code abgleichen.
Omega Psi ist offline   Mit Zitat antworten
Alt 14-04-2011, 07:57   #10 (permalink)
Neuer User
 
Registriert seit: Mar 2011
Beiträge: 7
hab das jetzt so gelöst und funktioniert einwandfrei danke für deine Hilfe

Code:
		import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			import mx.managers.PopUpManager;
			
			import views.ConversionTypesView;
			
			[Bindable]public var setupVO:SetupVO;
			[Bindable]public var conversion_typesList2:Array= new Array();
			
			private function close():void {
				PopUpManager.removePopUp(this);
			}
			
			protected function save_clickHandler(event:MouseEvent):void
			{
				var found:Boolean  = false;
 				for (var i:int = 0; i < conversion_typesList2.length; i++) 
				{
					if(nameCol.text == ConversionTypesTypeVO(conversion_typesList2[i]).value){
						found= true;
						break;

					}
				}
				if(found == true){
					setupVO.nameValue = nameCol.text;
					setupVO.availableVO.value = (avaibleCol.selected)?"true":null;
					setupVO.descriptionVO.value = descriptionCol.text;
					setupVO.templateVO.value = templateCol.text;
					setupVO.typeVO.value = typeCol.text;
					setupVO.setupDefinitionVO.locationFilesystemVO.value = (location_filesystemCol.selected)?"true":null;
					setupVO.setupDefinitionVO.mimetypeFallbackVO.value = (mimetype_fallbackCol.selected)?"true":null;
					setupVO.setupDefinitionVO.databinaryMimetypeVO.value = databinary_mimetypeCol.text;
					setupVO.setupDefinitionVO.fileExtensionVO.value = file_extensionnCol.text;
					setupVO.setupDefinitionVO.databinaryCachecontrolVO.value = databinary_cachcontrolCol.text;
					
					close();
				} else {
					Alert.show("Der Name ist nicht vorhanden.");
				}
			}
			
		]]>
	</mx:Script>
	<mx:Form width="100%" height="100%">
		<mx:FormHeading width="329" label="conversion_setups" textAlign="center"/>
		<mx:FormItem id="name_form"  width="100%" label="name:">
			<mx:TextInput id="nameCol"  text="{setupVO.nameValue}"/>
Max91 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
komplexerer MP3Player - (Wiedergabe-)liste (datagrid) , preloader headgrowe ActionScript 2 6 15-04-2009 13:41
Datagrid, via as2 die Liste an die richtige Stelle scrollen! easyJoe Komponenten und SmartClips 2 11-03-2009 00:14
Inhalte von einem Datagrid in ein zweites Datagrid übergeben...?! dahoody Flash MX 2004 0 16-02-2005 14:19
cpu vergleich... mort3n Am Rande 38 15-03-2004 20:16
if-Anweisung in on(release)-Anweisung mcpilz ActionScript 1 3 24-09-2003 19:39


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:12 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele