Combo paginado ExtJS con tienda JSON remota. Mostrar valor seleccionado con paginación

1

Tengo un combo ExtJS con almacenamiento remoto, que me devuelve datos en formato JSON. Cuando selecciono un valor en la primera página (por ejemplo) y luego navego a otra página, el combo muestra la identificación seleccionada, no el valor.

¿Cómo puedo mostrar siempre un valor seleccionado?

Código:

Ext.onReady(function() {
    Ext.define('Model', {
        extend: 'Ext.data.Model',
        fields: ['title'],
        idProperty: 'threadid'
    });

    var store = Ext.create('Ext.data.Store', {
        pageSize: 50,
        model: 'Model',
        remoteSort: true,
        proxy: {
            type: 'jsonp',
            url: 'http://www.sencha.com/forum/topics-browse-remote.php',
            reader: {
                root: 'topics',
                totalProperty: 'totalCount'
            },
            simpleSortMode: true
        }
    });

    var combo = Ext.create('Ext.form.ComboBox', {
        fieldLabel: 'Value',
        store: store,
        queryMode: 'remote',
        displayField: 'title',
        valueField: 'threadid',
        pageSize: 50,
        labelWidth: 50,
        width: 300,
        padding: '60 0 0 0'
    });

    Ext.create('Ext.window.Window', {
        title: 'Hello',
        height: 200,
        width: 400,
        layout: { type: 'vbox', align: 'center' },
        items: combo
    }).show();
})​

Ejemplo: http://jsfiddle.net/coshmos/5wT6H/

Más información (estudio de caso):
Tengo una tabla donde puedo actualizar los registros. Hago clic en un elemento y luego mi servidor devuelve valores de una base de datos. Luego aparece una ventana con IU. Para todos los combo paginados, solo devuelve las identificaciones. Entonces, hasta que no navegue a la página con el elemento con la identificación devuelta, no veo un valor. Si desactivo la paginación y cargo todos los valores, todo funciona como se esperaba, pero la carga de miles de valores no es buena.

3

Se puede arreglar de esta manera:

Ext.override(Ext.form.field.ComboBox,{
    findRecord: function(field, value) {
        var foundRec = null;
        Ext.each(this.lastSelection, function(rec) {
            if (rec.get(field) === value) {
                foundRec = rec;
                return false; // stop 'each' loop
            }
        });
        if (foundRec) {
            return foundRec;
        } else {
            return this.callParent(arguments);
        }
    }
});

Pruébelo : http://jsfiddle.net/5wT6H/3/

1

Cambié la lógica. Además, envíe un Id de un valor de cuadro combinado, luego configure extraProxyParams con este Id y cargue la tienda. Limpia los extraProxyParams después de eso. Entonces, después de que un usuario busque otro valor, puede hacerlo.