Ext.data.JsonStore как store в форме
Добрый день,есть следующий код:
{ xtype: 'combo', fieldLabel: 'Отдел', name : 'otdel', store: new Ext.create('Ext.data.JsonStore', { proxy: { type: 'ajax', url: 'php/otdel.php', reader: { type: 'json', root: 'contatos', successProperty: 'success', } }, idIndex: 0, autoload: true, fields: [ {name: 'id'}, {name: 'otdel'} ] }), triggerAction: 'all', displayField: 'otdel', valueField: 'id' } Есть проблема,что когда я открываю форму,и изменяю другие данные,то в базу от этого поля пытается записатся его имя а не его id,а в БД данный столбец integer... В общем как сделать что бы он сбрасывался всегда на id,даже если ты не изменяешь данное поля? |
Если честно не очень понятно в чем проблема. Написано очень сумбурно. Лучше будет, если вы приведете код в песочнице, чтобы там можно разобраться.
Цитата:
Цитата:
Цитата:
|
Смотри:
Есть таблица: ![]() Добавляю отдел: ![]() В итоге такой запрос: ![]() И получаю: ![]() Что отдел есть,а должности нету. А если должность выбрать заного,то получу то что нужно,в запросе вместо имени "тестовая должность" будет 1 |
Есть мысли?
|
Какая версия Ext (не ясно откуда взялась опция idIndex: 0, но в пятой версии такой опции нет)?
Также приведите полный код, формирующий форму. |
отдел и должность являются связанными списками? Значение должности выбирается из списка вручную?
|
Ext 4 версии
Списки не связаны. Из списка который по пост забросу берется,выбирает вручную при добавлении,но после сохранения,вновь зайдя в редактирования и изменении любогог другого поля,вместе id отдела или должности посылается имя,но в БД не придёт,т.к. поля int. А вот если при редактировании выбрать заново отдел или должность,то придёт id. |
initComponent: function() { this.items = [ { xtype: 'form', padding: '5 5 0 5', border: false, style: 'background-color: #fff;', fieldDefaults: { anchor: '100%', labelAlign: 'left', allowBlank: false, combineErrors: true, msgTarget: 'side' }, items: { xtype:'tabpanel', activeTab: 0, defaults:{ bodyPadding: 10, layout: 'anchor' }, items:[{ title:'Общая информация', defaultType: 'textfield', defaults: { anchor: '100%' }, items: [ { xtype: 'textfield', name : 'id', fieldLabel: 'id', hidden:true }, { ... }, { xtype: 'combo', fieldLabel: 'Отдел', name : 'otdel', store: Ext.create('Ext.data.JsonStore', { proxy: { type: 'ajax', url: 'php/otdel.php', reader: { type: 'json', root: 'contatos', successProperty: 'success', } }, idIndex: 0, autoload: true, fields: [ {name: 'id'}, {name: 'otdel'} ] }), triggerAction: 'all', displayField: 'otdel', valueField: 'id', }, { xtype: 'combo', fieldLabel: 'Должность', name : 'rol', store: new Ext.create('Ext.data.JsonStore', { proxy: { type: 'ajax', url: 'php/rol.php', reader: { type: 'json', root: 'contatos', successProperty: 'success', totalProperty: 'totalCount' } }, idIndex: 0, autoload: true, fields: [ {name: 'id'}, {name: 'rol'} ] }), triggerAction: 'all', displayField: 'rol', valueField: 'id', {...}, ]}] }} ]; |
Конкретнее пожалуйста, какая версия? Четвертых версий очень много...
|
Форма пассивная. Приведите код, который данные забирает из формы и посылает на сервер.
|
include("conectar.php"); $data = json_decode($_POST['contatos']); $surname= $data->surname; $fname = $data->fname; $lname = $data->lname; $DOB = $data->DOB; $phone = $data->phone; $resurs = $data->resurs; $otdel = $data->otdel; ...... $query = sprintf("UPDATE user SET surname = '%s', fname = '%s', lname = '%s',DOB = '%s',phone = '%s',resurs = '%s',otdel = '%s',........WHERE id=%d", mysql_real_escape_string($surname), mysql_real_escape_string($fname), mysql_real_escape_string($lname), mysql_real_escape_string($DOB), mysql_real_escape_string($phone), mysql_real_escape_string($resurs), mysql_real_escape_string($otdel), ........... $rs = mysql_query($query); echo json_encode(array( "success" => mysql_errno() == 0, "contatos" => array( "id" => $id, "surname" => $surname, "fname" => $fname, "lname" => $lname, "DOB" => $DOB, "phone" => $phone, "resurs" => $resurs, "otdel" => $otdel, ................ |
К сожалению отвлекся от форума, потому так долго не был. Вопрос еще актуален?
Цитата:
|
У вас неверно располагаются параметры: displayField: 'otdel', valueField: 'id' - это конфиг comboboxa.
xtype: 'combo', fieldLabel: 'Отдел', name : 'otdel', displayField: 'otdel', valueField: 'id', store: Ext.create('Ext.data.JsonStore', { .................. }, |
Часовой пояс GMT +3, время: 13:41. |