Как изменить размер окна выбора Sencha Touch после обновления магазина? - PullRequest
1 голос
/ 05 апреля 2011

Я занимаюсь разработкой приложения Sencha Touch.В настоящее время я пытаюсь получить SelectField для заполнения магазином.

Код моего магазина:

var store_Blocks = new Ext.data.JsonStore({
    model: 'Blocks',
    proxy: {
        type: 'ajax',
        url: '/search-blocks',
    },
    autoLoad: false,
    remoteFilter: true,
    listeners: {
        load: function(store, records, success) {
            Ext.getCmp('selectfield_Blocks').setDisabled(false);
        }
    }
});

Код моего поля выбора:

{
    id: 'selectfield_Blocks',
    xtype: 'selectfield',
    name: 'block',
    label: 'Block number',
    disabled: true,
    store: store_Blocks,
    listeners: {
        change: function(selectfield, block) {
            ...
        }
    }
}

Это поле выбора находится внутри плавающей панели.Каждый раз, когда я показываю () плавающую панель, мой магазин обновляется.Таким образом, поле выбора также обновляется.Однако это работает только в первый раз, когда я показываю () панель.В следующий раз, когда я показываю () плавающую панель, поле выбора правильно отображает обновленные данные, но средство выбора, которое появляется, когда я щелкаю поле выбора, не корректно изменяет размер.Размер определяется в зависимости от того, сколько строк данных было на момент первого отображения плавающей панели.

TLDR: Как изменить размер средства выбора поля Sencha Touch после обновления магазина?

Ниже приведен скриншот.Во второй раз, когда я щелкаю поле выбора, панель выбора не изменяется в соответствии с содержимым всего магазина.

enter image description here

Ответы [ 2 ]

1 голос
/ 06 апреля 2011

Кажется, что установка ширины и высоты частично устранила проблему.

Ext.getCmp('selectfield_Blocks').getListPanel().setHeight(300);
Ext.getCmp('selectfield_Blocks').getListPanel().setWidth(100);

У меня все еще есть некоторые другие проблемы, когда я не могу иногда выбрать элемент из поля выбора.Довольно странно.

0 голосов
/ 02 января 2012

Благодаря вашему решению я сделал что-то немного другое

    selectField.setOptions(options);
    if (Ext.isDefined(selectField.listPanel)) {
        selectField.listPanel.destroy();
        selectField.listPanel = undefined;
    }

Возможно, он немного менее эффективен, но он вычисляет ширину и высоту самостоятельно при каждом изменении данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...