Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.04.2013, 15:57
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

combobox в grid'е
есть грид. получаю фокус combobox'са и вместо значения (name) у меня показывает айдишник. после того как выберу элемент из списка, то дальше работает нормально. как при получения фокуса выводил сразу (name) а не id
var store_combo;
var store;
Ext.onReady(function(){
//-------------------
var getStore = function(URL, FIELDS)
    {
    return Ext.create('Ext.data.Store',
	{
	fields: FIELDS,
	idProperty: 'id',
	proxy:
	    {
	    type: 'ajax',
	    url: URL,
	    actionMethods:
		{
		read: 'POST'
		},
	    reader:
		{
		root: 'data',
		totalProperty: 'totalCount'
		}
	    },
	autoLoad: true
	});
    }
//-------------------

store_combo = getStore(
    'get/statuswork', 
    ['id', 'name']);
    
store = getStore(
    'get/work?project_id=3', 
    ['id', 'name', 'status_id']);

//-------------------
Ext.create('Ext.panel.Panel',
    {
    items: [
	{
	xtype: 'grid',
	store: store,
	columns: [
	    {
	    text: 'column',
	    dataIndex: 'status_id',
	    renderer: function(id)
		{
		var index = store_combo.find("id", id);
		return (index == -1) ? '' : store_combo.getAt(store_combo.find("id", id)).get('name');
		},
	    editor: Ext.create('Ext.form.field.ComboBox',
		{
		store: store_combo,
		hideLabel: true,
		queryMode: 'local',
		displayField: 'name',
		valueField: 'id'
		})
	    }],
	plugins: [Ext.create('Ext.grid.plugin.CellEditing', {clicksToEdit: 1})]
	}],
    renderTo: Ext.getBody()
    });
//-------------------
});
Ответить с цитированием
  #2 (permalink)  
Старый 15.04.2013, 17:26
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

кое что нарыл. беда в самих сторах. если данные хранятся в 'data' то все норм работает
вот пример сторы:
Ext.create('Ext.data.Store',
    {
    fields:['status_id'],
    data:[
        {"status_id": 2},
        {"status_id": 1},
        {"status_id": 2},
        {"status_id": 3}],
    proxy:
        {
        type: 'memory',
        reader:
            {
            type: 'json'
            }
        }
});

но мне данные нужно из бд тянуть, а не чтобы локально хранились..
Ответить с цитированием
  #3 (permalink)  
Старый 16.04.2013, 10:42
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

задача решилась.. id статуса в сторах была типа string а не int
вот к примеру:
Ext.create('Ext.form.field.ComboBox',
        {
        store: store_combo,
        hideLabel: true,
        queryMode: 'local',
        displayField: 'name',
        valueField: 'id',
        listeners:
                {
                focus:
                        {
                        fn: function()
                                {
                                console.log(typeof this.getValue());
                                }
                        }
                }
        }


при фокусе в консоль выдаст String, нужен int
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление ComboBox martinelli ExtJS 0 05.09.2012 10:03
Dynamic loading of ComboBox Tim ExtJS 6 08.03.2012 23:28
ComboBox на Panel-e. rom30 ExtJS 1 13.12.2011 19:53
Как узнать какое поле выбрано в combobox? viperrr ExtJS 6 15.11.2011 15:08
Grid + ComboBox kostiaGt ExtJS 3 05.11.2009 17:15