2012-06-26 1 views
2

Я использую ExtJS (v3), и у меня есть построенная форма, которую я хочу заполнить, чтобы пользователь мог редактировать данные и затем отправлять их обратно.ExtJS заполняет Ext.FormPanel данными из базы данных (JSON)

Форма построена правильно, и данные извлекаются из базы данных должным образом, но там, где у меня трудное время, заполняется форма данными из базы данных.

У кого-нибудь есть предложения?

Это мои данные, извлекается из базы данных:

var workflow_projects = new Ext.data.JsonStore({ 
     autoLoad: true, 
     autoDestroy: true, 
     url: '<% $jsonURL %>', 
     storeId: 'workflow_projects', 
     idProperty: 'ProjectID', 
     fields: [ 'ProjectID', 'ProjectName' ] 
}); 

, а затем моя форма:

var simpleForm = new Ext.FormPanel ({ 
labelWidth: 175, 
id: 'simpleForm', 
    url:'./edit', 
method: 'POST', 
    frame:true, 
    title: 'Edit', 
    bodyStyle:'padding:5px 5px 0', 
    width: 850, 
    defaultType: 'textfield', 

    items: [ 
     { 
      fieldLabel: 'Project Name', 
      name: 'ProjectName', 
      allowBlank:true, 
      anchor:'100%' 
     } 

    ] 
}); 

ответ

1

Я хотел бы использовать запись нагрузки в обработчик событий нагрузки для магазина. ваши имена полей должны совпадать с записью в хранилище, что похоже на то, что вы делаете для ProjectName.

http://docs.sencha.com/ext-js/3-4/#!/api/Ext.form.BasicForm-method-loadRecord

(код не тестируются в реальном браузере.)

var workflow_projects = new Ext.data.JsonStore({ 
      autoLoad: true, 
      autoDestroy: true, 
      url: '<% $jsonURL %>', 
      storeId: 'workflow_projects', 
      idProperty: 'ProjectID', 
      fields: [ 'ProjectID', 'ProjectName' ], 

     events : { 
      load: function(store, records, options){ 
      if(records[0]){ 
      simpleForm.getForm().loadRecord(records[0]); 
      } else{ 
      console.log("no data!"); 
      } 
     } 
    }); 
1

Я использую метод нагрузки на классе BasicForm Thats по наследству.

simpleForm.getForm().load({ 
    url: '/path/to/form/data', 
    params: { id: id}, 
    method: 'POST',  
    waitMsg: 'Loading data...' 
}); 

Ваш JSON должен выглядеть следующим образом:

{ "успеха": правда, "данные": { "ProjectID": "Foo", "ProjectName": "бар"}}

+0

спасибо - данные JSON возвращались и включали символ [и], который, как только я их удаляю, затем данные появились в форме - спасибо! – Mike

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