views:

702

answers:

2

(i posted this on the extjs forum too but recon SO is probably busier)


HI

I'm passing down the following json to a direct store:

{
"type": "rpc",
"tid": 2,
"action": "DirectReportDesigner",
"method": "GetReports",
"result": {
    "total": 1,
    "data": [{
        "id": 1,
        "FullTypeName": null,
        "title": "test",
        "useGroupedColConfig": false,
        "groupTextTemplate": "{'ProviderName': ' Contract Number -- {gvalue}','ProviderName': ' Provider Name -- {gvalue}'}",
        "groupHeaders": null,
        "groupFields": "['CostElement2', 'CostElement3', 'CostElement4']",
        "groupedHeaders": false,
        "jsonUrl": "report/BudgetManagerBudgetData.rails",
        "menuType": "rptmid",
        "actualType": "rptmid",
        "ignoreCols": "1",
        "getRowClass": "settings.utils.highlightRowWhenCellEmptyClass",
        "deleted": false,
        "fitToScreen": false,
        "isCopyOf": 0
    }]
}

}

here is what the js code looks like:

 Ext.extend(Ideal.ReportDesigner.ReportGrid, Ideal.UI.BaseGrid, {
    pageSize: 25,
    afterRender: function() {
        this.getStore().load({
            params: {
                start: 0,
                limit: 25
            }
        });

        Ideal.ReportDesigner.ReportGrid.superclass.afterRender.apply(this, arguments);
    },
    header: false,
    view: new Ext.grid.GridView({
        autoFill: true
    }),
    cm: new Ideal.UI.ColumnModel([{
        header: 'Report Name',
        id: 'nameCol',
        sortable: true,
        dataIndex: 'title'
    }, {
        header: 'Json URL',
        sortable: true,
        dataIndex: 'jsonUrl'
    }, {
        header: 'Group Text Template',
        sortable: true,
        dataIndex: 'groupTextTemplate'
    }, {
        header: 'Group Headers',
        sortable: true,
        dataIndex: 'groupHeaders'
    }, {
        header: 'Group Fields',
        id: 'groupFieldsCol',
        sortable: true,
        dataIndex: 'groupFields'
    }, {
        header: 'Grouped Headers',
        sortable: true,
        dataIndex: 'groupedHeaders'
    }, {
        header: 'Fit to Screen',
        sortable: true,
        dataIndex: 'fitToScreen'
    }, {
        header: 'Ignore Cols',
        sortable: true,
        dataIndex: 'ignoreCols'
    }, {
        header: 'Get Row Class',
        sortable: true,
        dataIndex: 'getRowClass'
    }
    ]),

    initComponent: function() {

        var ds = new Ext.data.DirectStore({
            directFn: DirectReportDesigner.GetReports,
            paramsAsHash: false,
            paramOrder: 'start|limit|sort|dir',
            root: 'data',
            idProperty: 'id',
            totalProperty: 'total',
            sortInfo: {
                field: 'title',
                direction: 'ASC'
            },
            fields: [{
                name: 'id'
            }, {
                name: 'title'
            }, {
                name: 'useGroupedColConfig'
            }, {
                name: 'groupTextTemplate'
            }, {
                name: 'groupHeaders'
            }, {
                name: 'groupFields'
            }, {
                name: 'groupedHeaders'
            }, {
                name: 'jsonUrl'
            }, {
                name: 'menuType'
            }, {
                name: 'actualType'
            }, {
                name: 'fitToScreen'
            }, {
                name: 'ignoreCols'
            }, {
                name: 'getRowClass'
            }, {
                name: 'isCopyOf'
            }
            ],
            remoteSort: true
        });

        var pager = new Ext.PagingToolbar({
            store: ds,
            displayInfo: true,
            pageSize: this.pageSize
        });

        var config = {
            store: ds,
            bbar: pager
        };
        Ext.apply(this, Ext.apply(this.initialConfig, config));
        Ideal.ReportDesigner.ReportGrid.superclass.initComponent.apply(this, arguments);
    }

});

the grid renders ok, the server code to get the json fires ok, but the store never loads the data. i know it's being passed back as i can see it in firebug and that's how i pasted it above.

can anyone see anything obvious here?

cheers

w://

A: 

I've always defined store's fields as an array of strings, not as objects.

fields: ['id','title','useGroupedColConfig', ...]
rodrigoap
this is ok but sometimes i need to specify more info - datatype etc
cvista
A: 

i managed to sort this - it was the name of the c# variable that was getting serialized that was throwing it - why i have no idea!!!

cvista