0

私は Ext.js を使用しており、データ ストアをセットアップして FormPanel のデータ フィールドにマップし、データ入力に簡単にアクセスできるようにしようとしています。
マッピングに何かが欠けています: テキストフィールドにデータを入力し、[送信] ボタンの送信ハンドラーを押すと、ストアのデータ プロパティが空白になります。ページにデータ入力が含まれていることを期待していました。誰か助けてくれませんか?どうもありがとう:

infoPanel = function () {
    this.store = new Ext.data.JsonStore({
        autoLoad: true,
        root: 'Data',
        storeId: 'creditMemoStore',
        fields: ['shipto', 'billto', 'reasonCode', 'creditClaimed', 'adjustmentAmount', 'poNumber']
    });


this.fieldset = {
    xtype: 'fieldset',
    flex: 1,
    border: false,
    defaultType: 'field',
    items: [
        {
            xtype: 'textfield',
            labelWidth: 160,
            fieldLabel: 'Ship to',
            name: 'shipto',
            //dropdown
            allowBlank: false
        },
        {
            xtype: 'textfield',
            labelWidth: 160,
            fieldLabel: 'Bill to',
            name: 'billto',
            //dropdown
            allowBlank: false
        },
        {
            xtype: 'textfield',
            labelWidth: 160,
            fieldLabel: 'Reason Code',
            name: 'reasonCode',
            //dropdown
            allowBlank: false
        },
        {
            labelWidth: 160,
            xtype: 'numberfield',
            allowNegative: false,
            fieldLabel: 'Amount',
            allowBlank: false,
            name: 'creditClaimed'
        },
        {
            labelWidth: 160,
            xtype: 'numberfield',
            allowNegative: false,
            fieldLabel: 'Adjustment Amount',
            name: 'adjustmentAmount',
            allowBlank: false,
            maxLength: 5
        },
        {
            xtype: 'textfield',
            labelWidth: 160,
            fieldLabel: 'Customer PO Number',
            allowBlank: false,
            name: 'poNumber',
            maxLength: 15
        },
        {
            xtype: 'textfield',
            labelWidth: 160,
            fieldLabel: 'Debit Memo Number',
            allowBlank: false,
            name: 'dmNumber',
            maxLength: 50
        },
        {
            xtype: 'textfield',
            labelWidth: 160,
            fieldLabel: 'Credit Memo Number',
            allowBlank: false,
            name: 'cmNumber',
            maxLength: 6
        },
        {
            xtype: 'textfield',
            labelWidth: 160,
            fieldLabel: 'Currency Code',
            name: 'currencyCode',
            //dropdown
            allowBlank: false,
            maxLength: 3,
            value: 'USD'
        }
    ]
};

this.panel = new Ext.form.FormPanel({
    renderTo: Ext.getBody(),
    width: 700,
    title: 'Create Credit Memo',
    height: 400,
    frame: true,
    id: 'creditMemoFormPanel',
    layout: 'vbox',
    layoutConfig: {
        align: 'stretch'
    },
    items: [
        this.fieldset
    ],
    store: this.store,
    buttons: [
        {
            text: 'Reset',
            handler: function () {
                this.up('form').getForm().reset();
            }
        },
        {
            text: 'Submit',
            formBind: true,
            handler: function () {
                var form = this.up('form').getForm();
                var store = Ext.StoreMgr.get('creditMemoStore');
                var dataObject = { testPost: store.data};
                if (form.isValid()) {
                    Ext.Ajax.request({
                        url: 'CreateCreditMemo',
                        jsonData: Ext.JSON.encode(dataObject),
                        success: function() { Ext.Msg.alert('json post Success'); },
                        failure: function () { Ext.Msg.alert('json post Fail'); },
                    });
                }
            }
        }
    ]
});

}

Ext.onReady(function () {
    var ip = new infoPanel();
});
4

1 に答える 1

0

Ext.jsストアは、一度に複数のデータセットが表示されるレコードにのみ使用されます。

ストアは基本フォームには適用されません。Ext.jsフォームは、送信時にすべてのフィールドの値を自動的に投稿します。

于 2012-10-31T15:51:08.437 に答える