mx.controls.listClassesIDropInListItemRenderer Die Schnittstelle für Renderer, in denen Elemente abgelegt werden können. Die Schnittstelle für Renderer, in denen Elemente abgelegt werden können. In den meisten IListItemRenderer-Objekten können keine Elemente abgelegt werden. Diese Objekte erwarten, dass ein bestimmtes Feld des Datenproviderelements verwendet wird. Sie können beispielsweise die „lastName“-Eigenschaft des Elements einer text-Eigenschaft einer Beschriftung zuweisen. Dies lässt sich mit Datenbindungsfunktionen leicht programmieren, hat aber die negative Folge, dass der Renderer nicht in einer anderen Spalte einer DataGrid- oder List-Klasse mit anderen Feldern verwendet werden kann. Mit der IDropInListItemRenderer-Schnittstelle kann ein anderer Renderer wiederverwendet werden. Die Listenklassen übergeben mehr Informationen an den Renderer, damit er bestimmen kann, welches Feld zur Laufzeit verwendet werden soll.

Komponenten, die als Renderer oder Editoren verwendet werden sollen, in denen Elemente abgelegt werden können, müssen die IDropInListItemRenderer-Schnittstelle implementieren. Viele Flex-Komponenten implementieren diese Schnittstelle und können daher in einer Spalte oder Liste als Renderer oder Editoren verwendet werden, in denen Elemente abgelegt werden können.

Renderer oder Editoren, in denen Elemente abgelegt werden können, müssen auch die IDataRenderer-Schnittstelle implementieren, um die data-Eigenschaft zu definieren.

Wenn eine Komponente als Renderer oder Editor verwendet wird, in dem Elemente abgelegt werden können, initialisiert Flex die listData-Eigenschaft der Komponente mit den geeigneten Daten aus dem List-Steuerelement. Die Komponente kann die listData-Eigenschaft verwenden, um die data-Eigenschaft des Renderers oder Editors, in dem Elemente abgelegt werden können, zu initialisieren.

Die listData-Eigenschaft ist vom Typ BaseListData, wobei die BaseListData-Klasse vier Unterklassen hat: DataGridListData, ListData, TreeListData und MenuListData. Welchen Datentyp der Wert der listData-Eigenschaft letztlich hat, hängt von dem Steuerelement ab, das den Renderer oder Editor, in dem Elemente abgelegt werden können, verwendet. Bei einem DataGrid-Steuerelement hat der Wert den Datentyp DataGridListData, bei einem List-Steuerelement den Datentyp ListData, bei einem Tree-Steuerelement den Datentyp TreeListData und bei einem Menu-Steuerelement den Datentyp MenuListData.

Das folgende Beispiel zeigt die Set-Methode für die data-Eigenschaft beim NumericStepper-Steuerelement, das die value-Eigenschaft des NumericStepper-Steuerelements basierend auf dem Wert der listData-Eigenschaft initialisiert:

    public function set data(value:Object):void
    {
      _data = value;
    
      this.value = _listData ? parseFloat(_listData.label) : Number(_data);
    
      dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
    }
  

Im obigen Beispiel ignoriert das NumericStepper-Steuerelement die data-Eigenschaft beim Einstellen der value-Eigenschaft des NumericStepper-Steuerelements und verwendet stattdessen die listData-Eigenschaft.

Um die IDropInListItemRenderer-Schnittstelle zu implementieren, definieren Sie eine Set- und Get-Methode zur Implementierung der listData-Eigenschaft. Die Set-Methode schreibt normalerweise den Wert der listData-Eigenschaft in eine interne Variable. Die Listenklasse weist diese Eigenschaft immer zu und legt dann das Datenproviderelement in der data-Eigenschaft fest.

Beachten Sie, dass die Set-Methode für die listData-Eigenschaft kein Ereignis auslöst. Dies ist deshalb der Fall, weil die Listenklassen immer erst listData und dann die data-Eigenschaft festlegen. Das Festlegen der data-Eigenschaft löst auch das dataChange-Ereignis aus. Sie legen listData nie für sich selbst fest, weshalb diese Eigenschaft auch kein eigenes Ereignis auslösen muss.

Die data-Set-Methode kann die invalidateProperties()-Methode aufrufen, wenn sie etwas auslöst, das eine Selbstaktualisierung des Steuerelements erforderlich macht. Der Entwickler der Komponente muss nun dafür sorgen, dass eine commitProperties()-Methode programmiert wird, um zu ermitteln, ob listData verändert wurde, und die entsprechenden Folgeschritte auszulösen.

Die Get-Methode gibt den aktuellen Wert der internen Variablen zurück, wie dem folgenden Beispiel entnommen werden kann:

    // Internal variable for the property value.
    private var _listData:BaseListData;
    
    // Make the listData property bindable.
    [Bindable("dataChange")]
    
    // Define the getter method.
    public function get listData():BaseListData
    {
      return _listData;
    }
    
    // Define the setter method,
    public function set listData(value:BaseListData):void
    {
      _listData = value;
    }
  
mx.controls.listClasses.BaseListDatamx.core.IDataRendererlistData Implementiert die listData-Eigenschaft unter Verwendung von Get- und Set-Methoden.mx.controls.listClasses:BaseListData Implementiert die listData-Eigenschaft unter Verwendung von Get- und Set-Methoden.
BaseListData Die BaseListData-Klasse definiert den Datentyp der listData-Eigenschaft, die von Renderern oder Editoren, in denen Elemente abgelegt werden können, implementiert wird.flash.events:EventDispatcher Die BaseListData-Klasse definiert den Datentyp der listData-Eigenschaft, die von Renderern oder Editoren, in denen Elemente abgelegt werden können, implementiert wird. Alle Renderer oder Editoren, in denen Elemente abgelegt werden können, müssen die IDropInListItemRenderer-Schnittstelle, mit der die listData-Eigenschaft definiert wird, implementieren.

Die listData-Eigenschaft ist vom Typ BaseListData, wobei die BaseListData-Klasse drei Unterklassen hat: DataGridListData, ListData und TreeListData. Welchen Datentyp der Wert der listData-Eigenschaft letztlich hat, hängt von dem Steuerelement ab, das den Renderer oder Editor, in dem Elemente abgelegt werden können, verwendet. Bei einem DataGrid-Steuerelement hat der Wert den Typ DataGridListData, bei einem List-Steuerelement den Typ ListData und bei einem Tree-Steuerelement den Typ TreeListData.

Wenn die Klasse als Renderer oder Editor verwendet wird, in dem Elemente abgelegt werden können, legt Flex die listData-Eigenschaft auf eine von BaseListData abgeleitete Klasse fest, die die berechneten Informationen über das Element in dem Datenprovider mit den Daten für das Element enthält.

Obwohl die Eigenschaften dieser Klasse änderbar sind, sollten Sie sie unverändert beibehalten. Sie werden durch die List-Klasse initialisiert und von einem Renderer oder Editor für Elemente gelesen. Eine Veränderung dieser Werte kann zu unerwarteten Ergebnissen führen.

Die Eigenschaften sind als bindbar gekennzeichnet, sie führen jedoch keine Change-Erkennung durch und senden auch keine Change-Ereignisse. Die Eigenschaften werden insgesamt geändert, indem ein neuer Wert für die listData-Eigenschaft festgelegt wird. Das change-Ereignis für die Änderung der listData-Eigenschaft aktualisiert alle Bindungen.

mx.controls.listClasses.IDropInListItemRendererBaseListData Konstruktor.labelDie Textdarstellung der Elementdaten. uidEin eindeutiger Bezeichner. ownermx.core:IUIComponentEin Verweis auf das Listensteuerelement. rowIndex0Die Indexposition der Zeile in den aktuell sichtbaren Zeilen des Steuerelements. columnIndex0Die Indexposition der Spalte in den aktuell sichtbaren Spalten des Steuerelements. Konstruktor. columnIndex Die Indexposition der Spalte im List-basierten Steuerelement relativ zu den aktuell sichtbaren Spalten des Steuerelements, wobei die erste Spalte die Indexposition 1 hat. Die Indexposition der Spalte im List-basierten Steuerelement relativ zu den aktuell sichtbaren Spalten des Steuerelements, wobei die erste Spalte die Indexposition 1 hat. label Die Textdarstellung der Elementdaten, basierend auf der itemToLabel()-Methode der Listenklasse. Die Textdarstellung der Elementdaten, basierend auf der itemToLabel()-Methode der List-Klasse. owner Ein Verweis auf das Listenobjekt, das Eigentümer dieses Elements ist.mx.core:IUIComponent Ein Verweis auf das Listenobjekt, das Eigentümer dieses Elements ist. Dies muss eine aus ListBase abgeleitete Klasse sein. Diese Eigenschaft ist als IUIComponent-Typ festgelegt, damit ablegbare Elemente wie Label und TextInput keine Abhängigkeiten zu List und allen ihren Abhängigkeiten haben müssen. rowIndex Die Indexposition der Zeile des DataGrid-, List- oder Tree-Steuerelements in Bezug auf die aktuell sichtbaren Zeilen des Steuerelements, wobei die erste Zeile die Indexposition 1 hat. Die Indexposition der Zeile des DataGrid-, List- oder Tree-Steuerelements in Bezug auf die aktuell sichtbaren Zeilen des Steuerelements, wobei die erste Zeile die Indexposition 1 hat. Beispiel: Sie können auf ein Element im Steuerelement klicken und rowIndex wird auf 3 eingestellt. Danach führen Sie einen Bildlauf durch das Steuerelement durch, um die Position der Zeile in den sichtbaren Zeilen des Steuerelements zu ändern, und klicken auf dieselbe Zeile wie vorher. Der rowIndex enthält jetzt einen anderen Wert, der der neuen Indexposition der Zeile in den aktuelle sichtbaren Zeilen entspricht. uid Der eindeutige Bezeichner für dieses Element. Der eindeutige Bezeichner für dieses Element.
IListItemRenderer Elementrenderer und Elementeditoren für Listenkomponenten müssen die IListItemRenderer-Schnittstelle implementieren.mx.core:IDataRendererflash.events:IEventDispatchermx.core:IFlexDisplayObjectmx.managers:ILayoutManagerClientmx.styles:ISimpleStyleClientmx.core:IUIComponent Elementrenderer und Elementeditoren für Listenkomponenten müssen die IListItemRenderer-Schnittstelle implementieren. Die IListItemRenderer-Schnittstelle ist eine Gruppe einer Reihe anderer Schnittstellen. Sie definiert keine neuen Klassenmethoden oder Eigenschaften.

Die Schnittstellengruppe umfasst: IDataRenderer, IFlexDisplayObject, ILayoutManagerClient, ISimpleStyleClient, IUIComponent. Die UIComponent-Klasse implementiert alle diese Schnittstellen,. mit Ausnahme der IDataRenderer-Schnittstelle. Daher gilt: Wenn Sie einen benutzerdefinierten Elementrenderer oder Elementeditor als Unterklasse derUIComponent-Klasse erstellen, brauchen Sie nur die IDataRenderer-Schnittstelle zu implementieren und können dann der Klassendefinition hinzufügen, dass die Klasse IDataRenderer und IListItemRenderer implementiert.

IListItemRenderer sind im Allgemeinen für die Anzeige eines bestimmten Felds aus dem Datenproviderelement vorgesehen und können nicht in anderen DataGrid-Spalten oder in anderen Listen mit anderen Feldern wiederverwendet werden. Wenn Sie einen Renderer erstellen möchten, der wiederverwendet werden kann, können sie auch IDropInListItemRenderer implementieren. Dann übergibt die Liste mehr Daten an den Renderer, sodass der Renderer mit verschiedenen Datenfeldern wiederverwendet werden kann.

Elementrenderer und Elementeditoren erhalten Daten aus dem Datenprovider einer Listenklasse über die IDataRenderer-Schnittstelle. Renderer und Editoren, die die IDropInListItemRenderer-Schnittstelle implementieren, erhalten andere Iinformationen aus der Listenklasse. Der Elementrenderer oder Elementeditor verwendet eine Information oder beide Informationen, um die Daten anzuzeigen.

Die Renderer und Editoren werden oft wiederverwendet. Nachdem sie erstellt wurden, können sie einfach wiederverwendet werden, indem sie neue Daten und optional eine listData-Eigenschaft erhalten. Daher müssen Sie in Ihrer Implementierung darauf achten, dass Komponenteneigenschaften nicht unbedingt ihre Anfangs- oder Standardwerte enthalten.