2012-06-26 3 views
2

ExtJS (v3)를 사용하고 있으며 사용자가 데이터를 편집 한 다음 다시 제출할 수 있도록 양식을 작성했습니다.ExtJS는 데이터베이스 (JSON)의 데이터로 Ext.FormPanel을 채 웁니다.

양식이 제대로 작성되어 있고 데이터가 데이터베이스에서 올바르게 추출되고 있지만 데이터베이스의 데이터로 양식을 채우는 데 어려움을 겪고 있습니다.

누구든지 의견이 있으십니까?

이 내 데이터가 데이터베이스에서 가져온되고있다 :

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 클래스의로드 방법을 사용 상속 이잖아.

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

다음과 같아야합니다 귀하의 JSON :

{ "성공"사실, "데이터": { "ProjectId": "foo는", "프로젝트 이름": "바"}}

+0

감사합니다 - JSON 데이터가 돌아 왔고 [및] 문자를 포함하면 데이터가 제거 된 후 데이터가 양식에 표시되었습니다. - 감사합니다! – Mike

관련 문제