ExtJS: Lösung für Fehlermeldung “this.items.items[0] is undefined” – Your Help Center
Copying sources and texts (also in parts) for publishing without our permission is NOT ALLOWED. We are fed up with finding our work on other sites (like stackoverflow).
Das Kopieren von Quellcode und Texten (auch in Auszügen) ist nicht erlaubt. Wir haben es gründlich satt, unsere Arbeit auf anderen Webseiten zu finden.

Copying for non-public usage is allowed.           Das private Kopieren und Benutzen ist natürlich erlaubt und erwünscht.
01. Dez 2011
Teaser

ExtJS: Lösung für Fehlermeldung “this.items.items[0] is undefined”

Die folgende Fehlermeldung tritt in einer ExtJS Anwendung häufig dann auf, wenn in einem Form-Element andere Elemente (wie z.Bsp. ein “Ext.grid.Grid”) eingebaut sind:

this.items.items[0] is undefined

Im folgenden Beispiel finden Sie in der 4. Zeile (“isFormField: true”) die Lösung für das Problem:

  items: [new Ext.grid.GridPanel({
    id: "testGrid",
    autoScroll: true,
    isFormField: true,
    height: 200,
    width: 400,
    columns: [{

Gehen Sie in Ihrem JS (JavaScript) Quellcode in das Nicht-Form-Element und fügen Sie die Zeile dort ein.

Sollten Sie das Element mit dem Formular auf Gültigkeit testen wollen (Validierung), dann benötigen Sie zusätzlich noch die Funktion “isValid” innerhalb des Elementes. Ansonsten erhalten Sie ggf. diese Fehlermeldung:

field.isValid is not a function

Am Beispiel des oberen “Ext.grid.GridPanel” hier der JavaScript Code:

  items: [new Ext.grid.GridPanel({
    id: "testGrid",
    autoScroll: true,
    isFormField: true,
    height: 200,
    width: 400,
    columns: [...],
    isValid: function() {
      // check ...
      return true;
    }

Fügen Sie Ihre Prüfungen in Zeile 9 ein und entscheiden Sie durch Ihre Prüfungen, ob das Element gültig ist oder nicht. Dabei können Sie z.Bsp. abfragen, ob mindestens eine Zeile im Grid ausgewählt wurde:

  isValid: function() {
    return Ext.getCmp("testGrid").selModel.selections.length > 0;
  }

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

dreizehn − zehn =