2017-01-31 2 views
1

У меня есть GridPanel на окне панели, которая загружает определенный магазин:ExtJS 4.2 - Обновление сетка с текущим переменным магазином

xtype: 'gridpanel', 
    store: custStore, 
    viewConfig: { 
    loadMask: false, 
    enableTextSelection: true 
    }, 
    hideHeaders: false, 
    bodyBorder: true, 
    id: 'playerslist-grid-id', 
    itemId: 'playerslist-grid-id', 
    viewConfig: { 
    deferEmptyText: false, 
    emptyText: 'No records yet' 
    }, 
    columns: [{ 
    text: 'Customer', 
    dataIndex: 'username', 
    flex: 1 
    }, { 
    header: '', 
    xtype: 'actioncolumn', 
    itemId: 'remove-player-btn', 
    width: 50, 
    sortable: false, 
    resizable: false, 
    menuDisabled: true, 
    hidden: bHide, 
    items: [{ 
     icon: 'resources/img/x.png', 
     tooltip: 'Remove Player', 
     scope: oMe 
    }], 
    editor: { 
     xtype: 'text', 
     name: 'deleteRow' 
    } 
    }] 

Переменная custStore обрабатываются как это.

var oMe = this; 
oController = EcommBackoffice.Global.app_var.getController('CustomerTagsController'), 
    cStore = oController.getCustomerListStore(), 
    cDetails = cStore.first(), 
    customers = []; 

customers = cDetails.get('customers'); 

var custStore = Ext.create('Ext.data.ArrayStore', { 
    model: 'CustomerList', 
    data: customers 
}); 

мне нужно, чтобы поместить его в хранилище массива, как объект данных вложен так:

{ 
    id: 1, 
    name: 'test', 
    description: 'test', 
    customers: [{ 
    id: 001, 
    username: 'bob' 
    }, { 
    id: 001, 
    username: 'terese' 
    }, { 
    id: 001, 
    username: 'dab' 
    }, { 
    id: 001, 
    username: 'bba' 
    }, { 
    id: 001, 
    username: 'hello' 
    }] 
} 

На моем контроллере я обрабатываю функцию, которая помещает custStore к нему и другим параметрам перед request ,

click: function() { 
    oController.addPlayerToTag(newPlayer, tagId, custStore); 
} 

Проблема: Как перезагрузить custStore на gridpanel я на после успешного обратного вызова? Я пробовал использовать custStore.load(), но ничего не произошло.

+0

Вы пробовали custStore.reload()? –

+0

Да. Это не сработало. Кажется, что магазин перезагружается, но фактический вид «gridpanel» - нет. Я просто хочу быть ясно, что '.reload()' выполняется из функции контроллера, вызванной представлением 'detailPanel'. Кажется, что 'gridpanel' в представлении' detailPanel' не обновляется независимо. – ralphcarlo

ответ

0

Если я правильно понимаю, вы получаете новый массив клиентов с сервера и должны обновить сетку с помощью этого массива. В этом случае, я думаю, вам нужно позвонить setData на custStore, перейдя в новый массив клиентов. Не уверен, имеет ли этот метод 4.2. Если нет, попробуйте установить свойство custStore.data.

Если это само по себе не работает, попробуйте также позвонить reconfigure на сетке, пройдя в custStore.

Смежные вопросы