商店未定义

时间:2011-06-13 07:31:33

标签: json extjs undefined store jsonstore

我在ExtJS上遇到此问题。我创建了一个显示在窗口上的网格,它将从外部服务器端脚本获取json数据。它是粗鲁的工作,但是萤火虫一直告诉我,商店未定义我点击网格中的列的所有内容。能帮我解决这个问题吗?这是我的代码:

var fields = [{
    name: "Name",
    type: "text"
}, {
    name: "NSId",
    type: "number"
}, {
    name: "Id",
    type: "number"
}, {
    name: "Version",
    type: "number"
}];

var columns = [{
    header: 'Name',
    id: 'Name',
    width: 160,
    sortable: true,
    dataIndex: 'Name'
}, {
    header: 'NSId',
    id: 'NSId',
    width: 45,
    sortable: true,
    hidden: true,
    dataIndex: 'NSId'
}, {
    header: 'Id',
    id: 'Id',
    width: 30,
    sortable: true,
    hidden: true,
    dataIndex: 'Id'
}, {
    header: 'Version',
    id: 'Version',
    width: 50,
    sortable: true,
    hidden: true,
    dataIndex: 'Version'
}];

var searchAndPickUrl = OcsConfig.url.refto;
var pickerUrl = '?picker=' + config.picker;
var createRefTo = searchAndPickUrl + pickerUrl;

var jsonstore = {
    xtype: 'jsonstore',
    autoDestroy: true,
    fields: fields,
    root: 'candidates',
    idProperty: 'Name',
    url: createRefTo,
    autoLoad: true
};

var cmpGrid = null;

var clickCell = function (trigger) {
        var record = cmpGrid.getSelectionModel().getSelected();
        var selValues = record.data['name'] + ',' + record.data['nsid'] + ',' + record.data['id'] + ',' + record.data['version'];
        Ext.Msg.alert('Name', selValues);
    };

var refToGrid = {
    id: Ext.id(),
    xtype: 'grid',
    store: jsonstore,
    columns: columns,
    stripeRows: true,
    defaults: {
        anchor: '100%'
    },
    autoExpandColumn: 'Name',
    height: 350,
    width: 600,
    title: '',
    stateful: true,
    stateId: 'grid',
    listener: {
        rowdblclick: clickCell
    }
};

var refToWin = function refToInputVal(trigger) {
        var values = config.options || [];
        var cmpWin = null;
        var genId = Ext.id();
        var win = null;

        if (cmpWin === null) {
            win = {
                xtype: 'window',
                title: config.caption || '',
                modal: true,
                items: [{
                    xtype: 'form',
                    id: genId,
                    padding: 5,
                    defaults: {
                        anchor: '100%'
                    },
                    items: [refToGrid]
                }],
                bbar: [{
                    xtype: 'button',
                    text: 'OK',
                    handler: function () {
                        returnValue(trigger, cmpGrid);
                        cmpWin.hide();
                    }
                }, {
                    xtype: 'button',
                    text: 'Cancel',
                    handler: function () {
                        cmpWin.hide();
                    }
                }],

感谢。

1 个答案:

答案 0 :(得分:1)

更改商店声明......

var jsonstore = new Ext.data.JsonStore({
    autoDestroy: true,
    fields: fields,
    root: 'candidates',
    idProperty: 'Name',
    url: createRefTo,
    autoLoad: true
});