ExtJS и combobox
Доброй ночи. Почему-то некорректно срабатывает combobox, а точнее вообще не срабатывает. добавлял 2 combobox'a для 2 полей(категории и ФИО) для combobox'a с категорией все впорядке, combobox ФИО делал по аналогии(копи паст и переименовал). Но Категория работает корректно а ФИО нет, не могу понять где что пропустил. вот собственно код.
На форме обновления
так же приложу часть бд что бы было видно что да как joxi.ru/DrlVOoWuOPzo2P joxi.ru/l2Z6VRqIW4yg2J
Подскажите пожалуйста что я мог упустить, если с textfield поле natface работает хорошо, а с combobox нет… Уже 2 дня промучался так и не понял в чем беда.
На форме обновления
Ext.extend(DriverLicense.window.UpdateLicenses, MODx.Window, {
getFields: function (config) {
return [{
xtype: 'hidden',
name: 'id',
id: config.id + '-id',
}, {
xtype: 'textfield',
fieldLabel: _('driverlicense_license_number'),
name: 'number',
id: config.id + '-number',
anchor: '99%',
allowBlank: false,
}, {
xtype: 'driverlicense-combo-categorycombo',
fieldLabel: _('driverlicense_license_category'),
name: 'category',
id: config.id + '-category',
anchor: '99%',
allowBlank: false,
},{
xtype: 'datefield',
fieldLabel: _('driverlicense_license_date_open'),
name: 'date_open',
id: config.id + '-date_open',
anchor: '99%',
format: 'Y-m-d',
submitFormat: 'Y-m-d H:i:s',
allowBlank: false,
}, {
xtype: 'driverlicense-combo-natfacecombo',
fieldLabel: _('driverlicense_license_name'),
name: 'names',
id: config.id + '-names',
anchor: '99%',
allowBlank: false,
}, {
xtype: 'textfield',
fieldLabel: _('driverlicense_license_issuedby'),
name: 'issuedby',
id: config.id + '-issuedby',
anchor: '99%',
allowBlank: false,
}, {
xtype: 'textfield',
fieldLabel: _('driverlicense_license_mark'),
name: 'mark',
id: config.id + '-mark',
anchor: '99%',
allowBlank: true,
}/*, {
xtype: 'driverlicense-combo-categorycombo',
fieldLabel: _('driverlicense_license_active'),
name: 'active',
id: config.id + '-active',
anchor: '99%',
allowBlank: false,
}*/];
}
});
Ext.reg('driverlicense-licenses-window-update', DriverLicense.window.UpdateLicenses);
в файле combo.jsDriverLicense.combo.CategoryCombo = function(config) {
config = config || {};
Ext.applyIf(config,{
name: 'category'
,hiddenName: 'category'
,displayField: 'name'
,valueField: 'id'
,url: DriverLicense.config.connectorUrl
,baseParams: { action: 'mgr/category/getlist' }
,fields: ['id','name']
,pageSize: 20
,typeAhead: true
,editable: true
});
DriverLicense.combo.CategoryCombo.superclass.constructor.call(this,config);
};
Ext.extend(DriverLicense.combo.CategoryCombo,MODx.combo.ComboBox);
Ext.reg('driverlicense-combo-categorycombo',DriverLicense.combo.CategoryCombo);
DriverLicense.combo.NatfaceCombo = function(config) {
config = config || {};
Ext.applyIf(config,{
name: 'natface'
,hiddenName: 'natface'
,displayField: 'name'
,valueField: 'id'
,url: DriverLicense.config.connectorUrl
,baseParams: { action: 'mgr/natface/getlist' }
,fields: ['id','name']
,pageSize: 20
,typeAhead: true
,editable: true
});
DriverLicense.combo.NatfaceCombo.superclass.constructor.call(this,config);
};
Ext.extend(DriverLicense.combo.NatfaceCombo,MODx.combo.ComboBox);
Ext.reg('driverlicense-combo-natfacecombo',DriverLicense.combo.NatfaceCombo);
В процессе тестирования выявил что с xtype: 'textfield' работает форма корректно(данные изменяются). Так же в файл update.class.php вывел результат переданных значений$names = trim($this->getProperty('names'));
$this->modx->log(modX::LOG_LEVEL_ERROR, '????????????????'.$names);
$this->modx->log(modX::LOG_LEVEL_ERROR, '!!!!!!!!!!!!!!!!!!'.$this->object->get('names'));
$category = trim($this->getProperty('category'));
$this->modx->log(modX::LOG_LEVEL_ERROR, '????????????????------'.$category);
$this->modx->log(modX::LOG_LEVEL_ERROR, '!!!!!!!!!!!!!!!!!!-----'.$this->object->get('category'));
и на выходе получил joxi.ru/YmEDka5FzE7er6так же приложу часть бд что бы было видно что да как joxi.ru/DrlVOoWuOPzo2P joxi.ru/l2Z6VRqIW4yg2J
Подскажите пожалуйста что я мог упустить, если с textfield поле natface работает хорошо, а с combobox нет… Уже 2 дня промучался так и не понял в чем беда.
Комментарии: 9
А в чем проблема: не создается в окне или не сохраняется значение?
не передается значение id с комбобокса в другую таблицу. Постоянно на выходе пустое значение. joxi.ru/1A5p9xYhyekV2E Хотя в сам комбобокс поступаюи и id и name joxi.ru/xAe0eDohxQ6N2y, id проверял через displayField: 'id'.
Только что попробовал подключить нв столбец ФИО работающий комбобокс(Категории) и та же ситуация, на поле ФИО не происходит изминений при выборе какого либо пункста из комбобокса, при этом само поле Категории с комбобоксом Категории работает нормально.
Куда рыть уже не знаю
PS. Сейчас таблица в виде joxi.ru/KAgGMoVTbw6kAl, когда изменяю поле ФИО на
Только что попробовал подключить нв столбец ФИО работающий комбобокс(Категории) и та же ситуация, на поле ФИО не происходит изминений при выборе какого либо пункста из комбобокса, при этом само поле Категории с комбобоксом Категории работает нормально.
Куда рыть уже не знаю
PS. Сейчас таблица в виде joxi.ru/KAgGMoVTbw6kAl, когда изменяю поле ФИО на
editor: { xtype: 'driverlicense-combo-natfacecombo' ,renderer: true},
получаю joxi.ru/xAe0eDohxQPN2y Но в окнах создания и редактирования почему-то происходит непонятная фигня(((
У комбобоксса с именами укажи
name: 'names'
,hiddenName: 'names'
елы-палы!!! Сработало!!! Спасибо!!!!!
Еще один вопросик можно?)
Мы можем как-то выводить в комбобоксе не одно значение в displayField: 'name' а несколько, через запятую к примеру?
Еще один вопросик можно?)
Мы можем как-то выводить в комбобоксе не одно значение в displayField: 'name' а несколько, через запятую к примеру?
Комбобокс выводит то, что ему пришлет mgr/natface/getlist. Сформируй поле name как тебе хочется. Только что тогда будет значить id?
П.С. Для выражения спасибо можно можно использовать плюсик. :)
П.С. Для выражения спасибо можно можно использовать плюсик. :)
к примеру я хотел бы вывести name, passport в комбобоксе, значение id при этом же не поменяется, т.к. name и passport соответствуют одному id(человеку). name, passport находятся в mgr/natface/getlist
Ну как -то так
public function prepareRow(xPDOObject $object) {
$row = $object->toArray();
$row['name'] = $row['name'].' : '.$row['passport'];
return $row;
я так понял это на PHP, а мне нужно на ExtJS, типа для пользователя отображается одно, но в базу вносится другое.
Вот я пытался сделать так
но когда я выбираю один из пунктов получаю пустое поле(как будто ничего и не выбирал) joxi.ru/gmvgevXSRLdd2a
Вот я пытался сделать так
DriverLicense.combo.NatfaceCombo = function(config) {
config = config || {};
Ext.applyIf(config,{
name: 'names'
,hiddenName: 'names'
,displayField: 'name'
,url: DriverLicense.config.connectorUrl
,baseParams: { action: 'mgr/natface/getlist' }
,fields: ['id','name']
,pageSize: 20
,typeAhead: true
,editable: true
,tpl: '<tpl for="."><div class="x-combo-list-item" >{name} {id} </div></tpl>'
,valueField: 'id'
});
DriverLicense.combo.NatfaceCombo.superclass.constructor.call(this,config);
};
Ext.extend(DriverLicense.combo.NatfaceCombo,MODx.combo.ComboBox);
Ext.reg('driverlicense-combo-natfacecombo',DriverLicense.combo.NatfaceCombo);
и получаю такой результат joxi.ru/12MjQYRuQMkVAJно когда я выбираю один из пунктов получаю пустое поле(как будто ничего и не выбирал) joxi.ru/gmvgevXSRLdd2a
Насколько я понял твою задачу, достаточно в процессоре mgr/natface/getlist прописать функцию
Если принципиально на ExtJS, то тут уж сам, помочь не смогу.
public function prepareRow(xPDOObject $object) {
$row = $object->toArray();
$row['name'] = $row['name'].', '.$row['passport'];
return $row;
}
И всё! Если принципиально на ExtJS, то тут уж сам, помочь не смогу.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.