Long Le
Long Le

Reputation: 3

Sencha Touch selectfield cannot display value from datastore

I'm trying to load a store into a Select field in sencha touch 2.0 but got a strange proble: For following code:

        {
            xtype : 'list',
            store : 'Docbases',
            itemTpl : 'Hello {docbase}!'
        }, {
            xtype : 'selectfield',
            label : 'Docbase',
            id : 'docbase',
            store : 'Docbases',
            displayField : 'docbase',
            valueField : 'docbase',
            placeHolder : 'Select a Value'

        }

The list component can display well, while selectfield cannot display the value. When click on that selectfield, I got a console error:

Uncaught TypeError: Cannot call method 'get' of null

My Store is declared as:

Ext.define('FDMobileClient.store.Docbases', {
    extend : 'Ext.data.Store',
    requires : ['FDMobileClient.model.Docbase'],
    model : 'FDMobileClient.model.Docbase',
    autoLoad : true,
    proxy : {
        type : 'ajax',
        url : '/MobileInternalProject/mobile/getDocbaseList.action',
        reader : {
            type : 'json',
            root : 'docbases'
        }
    },

});

Does anyone have any ideas what I'm doing wrong :(

I'm appreciated all of your help. Thanks

Long

Upvotes: 0

Views: 3832

Answers (2)

alexgrimaldi
alexgrimaldi

Reputation: 303

Your store seems fine to me. That's what I did to get is sorted:

  • in your view config:

    config: {
       ...
       docStore : null
       ...
    },
    
  • in your view init:

    initialize: function() {
       ...
       docStore = Ext.create('FDMobileClient.store.Docbases');
       ...
    },
    
  • finally the code for your selectfield

    {
        xtype : 'list',
        store : 'Docbases',
        itemTpl : 'Hello {docbase}!'
    }, {
        xtype : 'selectfield',
        label : 'Docbase',
        id : 'docbase',
        store : docStore, //NOTE: no quotes!
        displayField : 'docbase',
        valueField : 'docbase',
        placeHolder : 'Select a Value'
    
    }
    

It worked for me, it should be OK for you too. Good luck, Alex

Upvotes: 2

Sewdn
Sewdn

Reputation: 613

You should give your store an ID and use this identifier when referring to the store:

Ext.define('FDMobileClient.store.Docbases', {
extend : 'Ext.data.Store',
requires : ['FDMobileClient.model.Docbase'],
model : 'FDMobileClient.model.Docbase',
id : 'DocbaseStore'
...
}
{
...
store : 'DocbaseStore',
displayField : 'docbase',
...
}

Upvotes: 1

Related Questions