Kategorien

Suchen


Aktuelle Artikel

Archiv

Ext JS

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

Donnerstag, 01.12.2011

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:

1
2
3
4
5
6
7
  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:

1
2
3
4
5
6
7
8
9
10
11
  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:

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

ExtJS: Fehler “unterminated string literal” bei .load()

Donnerstag, 18.02.2010

Wenn Sie auf Ihrer Webseite mit Ext JS und der Funktion “xyz.open()” Daten nachladen, kann es vorkommen, dass Ihre Maske die Daten nicht zeigt und der Ladevorgang nicht beendet wird. Sie sehen dann (sofern Sie es aktiviert haben) die Lademeldung weiterhin auf dem Bildschirm.

Die Meldung in der Fehlerkonsole des Browsers lautet (z.Bsp.):

Fehler: unterminated string literal
Quelldatei: http://localhost/ext/ext-all.js
Zeile: 7, Spalte: 73
Quelltext:
({“count”:1,”success”:true,”items”:[{“id”:1234,”ref”:”",”txt”:”Shell

Grund für den Fehler ist dann meist ein Zeilenumbruch (CRLF) im Text (hier in der Variablen “txt”).

Diesen umbruch kann das JSON Format zwar an Ihre Anwendung übertragen, JavaScript kommt damit dann aber nicht zurecht.

Lösung:

Ersetzen Sie bei der JSON Erstellung (z.Bsp. in PHP) den Umbruch durch ein “\n”:

eregi_replace(chr(13).chr(10),'\n',$to->Text)