3

を実行するform.loadRecord(record);と、データは tetfields に送られますが、id 値を使用するチェックボックスとコンボはすべて空です...この問題には多くの解決策を試しましたが、うまくいきません。

    Ext.define('Ext.migration.ProductEditPanel', { 
        extend:  'Ext.panel.Panel',
        alias: 'widget.producteditpanel',
        title: 'Genel Bilgiler',
        layout: 'column',
        bodyPadding: 5,
        ds_activeProductTypes: this.ds_activeProductTypes,
        initComponent: function() {
            this.items = [{
                columnWidth: 0.5,
                xtype: 'form',
                id: 'productcrudform',
                margin: '0 5 0 0',
                bodyPadding: 5,
                name: 'productcrudform',
                url: baseUrl + "productcrud",
                defaultType: 'textfield',
                items: [{
                        scale: this,
                        inputType: 'hidden',
                        id: 'actionType',
                        name: 'actionType',
                        value: this.actionType
                    },{
                        fieldLabel: 'ID',labelWidth: 140,
                        id: 'id',
                        name: 'id',
                        disabled: true,
                        anchor : '100%'
                    },{
                        fieldLabel: 'Ürün Adı',labelWidth: 140, anchor : '100%',
                        id: 'name',
                        name: 'name'                            
                    },{
                        fieldLabel: 'Kod', labelWidth: 140, anchor : '100%',
                        name: 'code',
                    },
                    {
                        xtype : 'combo', labelWidth: 140, anchor : '100%',
                        fieldLabel : 'Ürün Tipi',
                        name : 'productType.name',
                        hiddenName : 'productType.id',
                        store : new Ext.data.ArrayStore({
                            fields : [ 'productType.id', 'productType.name'],
                            data : [
                                [ 1, 'TISORT'],
                                [ 2, 'POSTER'],
                                [ 3, 'KAPSONLU'],
                                [ 4, 'TELEFON_KAPAK']]
                        }),
                        mode : 'local', 
                        valueField : 'productType.id',
                        displayField : 'productType.name'
                    },{
                        fieldLabel: 'Aktif', labelWidth: 140, width: 180,
                        inputType: 'checkbox',
                        name: 'activeFlag'
                    },{
                        name: 'newFlag',
                        fieldLabel: 'Yeni Ürün', labelWidth: 140, width: 180,
                        inputType: 'checkbox'
                    },{
                        name: 'clearanceFlag',
                        fieldLabel: 'Tasfiye Ürün', labelWidth: 140, width: 180, anchor : '0%',
                        inputType: 'checkbox'
                    }
                ]
            },
            {   // PRICE GRID INIT
                columnWidth: 0.5,
                title: 'Prices',
                requires: 'Ext.migration.PriceGrid',
                xtype: 'productpricegrid',
                id: 'prices-grid',
                region: 'center',
                border: true,
                store: pricesStore
            }];

            this.callParent(arguments);
        },            
        onSubmit: function() {}
    });

解決策 1:

field: {
    xtype: 'checkboxfield',
    name: 'active_state',
    value: 1,
    inputValue: 1,
    uncheckedValue: 0
}

また:

field: {
    xtype: 'checkboxfield',
    name: 'active_state',
    value: 1,
    inputValue: true,
    uncheckedValue: false
}

また:

field: {
    xtype: 'checkboxfield',
    name: 'active_state',
    value: 1,
    inputValue: 'true',
    uncheckedValue: 'false'
}
4

1 に答える 1

2

loadRecord を呼び出すと、レコードのすべてのフィールドに対して同じ名前のフォーム フィールドが検索され、見つかった場合はそのレコードの「setValue」が呼び出されるため、チェックボックスとコンボのメソッドを調べる必要があります。チェックボックスの場合はかなり簡単です。デフォルトでは、これらの値のみがチェックボックスをオンにします:

true
'true'
'1'
'on'

他の値は false としてチェックします。したがって、モデルのフィールドがブール型として定義されている場合、すべてが機能します (そのため、モデル フィールドとフォーム アイテム名が一致することを確認する必要があります)。カスタムの「真」の値が必要な場合は、inputValue プロパティを指定するだけです。

コンボボックスの場合、ストアがリモートとして設定されていて、forceSelection true として設定されていて、値フィールドが表示フィールドと異なる場合は少し複雑ですが、あなたの場合はまったく問題はありません。あなたの問題は、ArrayStoreを使用したことだと思います。データストアに切り替えるだけです。

jsfiddle の例

于 2013-09-10T10:15:27.140 に答える