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 回答