Skonfigurowałem mój sklep jako:

var store = new Ext.data.JsonStore({
url: 'gridData.php',
root: 'movies',
fields: ['film_id', 'title', 'release_year', 'rating']
});

A następnie zdefiniował moją siatkę jako:

var grid = new Ext.grid.GridPanel({
    title:'Movies',
    store: store,
    columns: [
                { header: "ID", width: 30, dataIndex: 'film_id',sortable: true, hidden:true },
                { id: 'title-col', header: "Title", width: 180,dataIndex: 'title', sortable: true },
                { header: "Rating", width: 75, dataIndex: 'rating',sortable: true },
                { header: "Year", width: 75, dataIndex: 'release_year',sortable: true, align: 'center' }
        ],
    autoExpandColumn: 'title-col',
    renderTo: Ext.getBody(),
    width: 600,
    height: 300,
    loadMask: true
});

Następnie załaduję sklep:

store.load();

Robię to wszystko w metodzie {x0}}. Dane, które chcę wyświetlać, są pobierane z pliku PHP, który ma następujący formularz:

{ "count":2, "movies":[{ "film_id":"1", "title":"ACADEMY DINOSAUR", "description":"An Epic Drama of a Feminist And a Mad Scientist who must Battle a Teacher in The Canadian Rockies", "release_year":"2006", "rating":"PG", "special_features":"Deleted Scenes,Behind the Scenes" }, { "film_id":"2", "title":"ACE GOLDFINGER", "description":"An Astounding Epistle of a Database Administrator And an Explorer who must Find a Car in Ancient China", "release_year":"2006", "rating":"G", "special_features":"Trailers,Deleted Scenes" } ] }

Po załadowaniu strony siatka utrzymuje maskę ładowania, a dane nigdy nie są wyświetlane. Również dostaję błąd a is undefined. Co mi brakuje?

Edytuj

Odkryłem, że przy przypisaniu adresu URL jest jakiś problem ścieżki do przechowywania, ale nadal nie może rozwiązać. Mój plik "Griddata.php", plik JS i plik HTML, w których jest wyświetlana siatka, znajdują się w tym samym folderze i jestem na "Localhost / MyApp". Proszę pomóż!

5
wasimbhalli 16 październik 2011, 13:19

4 odpowiedzi

Najlepsza odpowiedź

Zakładając, że działa EXTJS 4 Zdefiniuj taki sklep:

var store = new Ext.data.JsonStore({
    proxy: {
        url: 'gridData.php',
        type: 'ajax',
        reader: {
            type: 'json',
            root: 'movies'
        }
    },
    fields: ['film_id', 'title', 'release_year', 'rating']
});
0
Asken 25 październik 2011, 08:33

Spróbuj z tym sklepem:

var store = new Ext.data.JsonStore({
     url: 'gridData.php',
     root: 'movies',
     fields: [
               {
                  name: 'id'
               },
               {
                  name: 'title'
               },
               {
                  name: 'release_year'
               },
               {
                  name: 'rating'
               }                       
     ]
});
-1
jack.cap.rooney 16 październik 2011, 10:31

Twój sklep deklaruje się, aby te pola:

  • ID
  • tytuł
  • rok wydania
  • ocena

Jednak wiersze JSON Data zawierają te pola:

  • Film_id.
  • tytuł
  • opis
  • rok wydania
  • ocena
  • cechy szczególne

Twój błąd jest prawdopodobnie spowodowany przez siatkę szukającą pola "ID", która nie istnieje w danych.

Jedną opcją jest zmiana definicji pola sklepu do:

['film_id', 'title', 'release_year', 'rating']

Musisz także dokonać odpowiedniej zmiany definicji kolumny:

{header: "ID", width: 30, dataIndex: 'film_id', sortable: true, hidden: true}

Inną opcją jest dodanie mapowania do definicji pola w sklepie:

[{name: 'id', mapping: 'film_id'}, 'title', 'release_year', 'rating']

Sugeruję również, że podczas opracowywania Uwzględnia EXTJS na twoją stronę za pomocą "EXT-All-debug.js" zamiast "EXT-ALL.JS". Komunikaty o błędach i podfania w konsoli zazwyczaj będą znacznie bardziej opisowe podczas biegania w stosunku do budowy debugowania.

2
owlness 16 październik 2011, 17:28

Powinien być prosty. Domyślna wartość idProperty jest id i nie ustawiłeś innego. Więc sklep wygląda pola id, które nie istnieje.

To powinno działać

var store = new Ext.data.JsonStore({
url: 'gridData.php',
root: 'movies',
idProperty: 'film_id',
fields: ['film_id', 'title', 'release_year', 'rating']
});
1
sra 25 październik 2011, 08:07