2

ExtJS(v3)を使用しており、ユーザーがデータを編集して送信できるように、データを入力するフォームを作成しています。

フォームは適切に作成され、データはデータベースから適切にプルされていますが、私が苦労しているのは、データベースからのデータをフォームに入力することです。

誰か提案がありますか?

これは、データベースから取得された私のデータです。

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%'
        }

    ]
});
4

2 に答える 2

1

継承した BasicForm クラスで load メソッドを使用します。

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

JSON は次のようになります。

{ "success": true, "data": { "ProjectId": "foo", "ProjectName": "bar" } }

于 2012-06-27T08:26:13.993 に答える
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!");
            }
        }
    });
于 2012-06-26T22:27:17.913 に答える