2

I have the following:

require([
    "dojo/dom",
    "dojo/on",
    "dojo/store/Observable",
    "dojo/store/JsonRest",
    "dojo/store/Memory",
    "dgrid/OnDemandGrid"
], function (dom, on, Observable, JsonRest, Memory, OnDemandGrid) {

    var store = new JsonRest({
        target: 'client/list',
        idProperty: 'id'
    });

    var grid = new OnDemandGrid({
        columns: {
            "id": "ID",
            "number": "Name",
            "description": "Description"
        },
        sort: "lastName",
        store: store
    }, "grid");
});

client/list is a rest url returning a json object {data:[...]}, but the content of the list never shows up :/

I think the problem is caused by the async data loading, because with a json hard coded object the content show up

EDIT :

I've succeeded in achieving this by using a dojo/request, but the JsonRest shouldn't normally act the same way ? Can someone point me to the right direction ?

require([
    'dojo/dom',
    'dojo/on',
    'dojo/store/Memory',
    'dojo/request',
    'dgrid/OnDemandGrid'
], function (dom, on, Memory, request, OnDemandGrid) {

    request('client/list', {
        handleAs: 'json'
    }).then(function (response) {
        // Once the response is received, build an in-memory store with the data
        var store = new Memory({ data: response });

        // Create an instance of OnDemandGrid referencing the store
        var grid = new OnDemandGrid({
            store: store,
            sort: 'id', // Initialize sort on id, ascending
            columns: {
                'id': 'ID',
                'number': 'Name',
                'description': 'Description'
            }
        }, 'grid');
        console.log(store);

        on(dom.byId('queryForm'), 'input', function (event) {
            event.preventDefault();
            grid.set('query', {
                // Pass a RegExp to Memory's SimpleQueryEngine
                // Note: this code does not go out of its way to escape
                // characters that have special meaning in RegExps
                description: new RegExp(this.elements.last.value, 'i')
            });
        });

        on(dom.byId('queryForm'), 'reset', function () {
            // Reset the query when the form is reset
            grid.set('query', {});
        });
    });
});
kitensei
  • 2,510
  • 2
  • 42
  • 68

1 Answers1

0

Ok problem found :/

My "client/list" url was returning a json object like this:

{data: [{id:"1", label: "test"}, {id:"2", label: "test"}]}

Turns out that the JsonRest object is already encapsulating data in a data node, so by returning a json like this:

{[{id:"1", label: "test"}, {id:"2", label: "test"}]}

everything worked fine :)

kitensei
  • 2,510
  • 2
  • 42
  • 68