0

ExtJS 4.1 を使用しています。顧客のリストを含むコンボ ボックスを作成する必要があり、事前に選択された特定の項目を設定したいのですが、その方法がわかりません。コンボボックスを作成するコードは次のとおりです。

xtype: 'combobox',
fieldLabel: 'customer',
name: 'customer_id',
allowBlank:false,
afterLabelTextTpl: required,
//data store
store: Ext.create('Ext.data.Store', {
    autoDestroy: true,
    model: 'customer_model',
    autoLoad: true,
    proxy: {
        type: 'ajax',
    url: 'load.php?item=customer',            
    reader: {
        type: 'json',
        successProperty: 'success',
        root: 'data'
    }
    }
}),
valueField: 'id',
displayField: 'company',
typeAhead: true,
queryMode: 'remote',
emptyText: ''

ご覧のとおり、コンボ ボックスにはデータ ストアが表示されています。このデータ ストアは、「customer_model」というデータ モデルに基づいて構築されています。データモデルのコードは次のとおりです。

Ext.define('customer_model', {
    extend: 'Ext.data.Model',
    fields: [
        {type: 'int', name: 'id'},
        {type: 'string', name: 'company'},
        {type: 'string', name: 'vat'},
        {type: 'string', name: 'ssn'},
        {type: 'int', name: 'ref_id'}
    ]
}); 

ページがロードされたときに特定のアイテム、たとえば id が 1 の顧客が自動的に選択されるように、コンボ ボックスを構成したいと思います。誰でも私を助けることができますか?前もって感謝します。エンリコ。

4

5 に答える 5

3

Ext.js 3.2.1では、次のことができます。

combobox.setValue(id);

これは、コンボボックスがvalueFieldとしてidを使用するように構成されていることを前提としています。あなたのコードはこれが事実であることを示しているようです。また、値を設定するid値への参照も必要になります。ここでの注意点は、このコードがモデルのロード後にのみ実行されることを確認する必要があることです。そうしないと、コンボボックスに何も表示されません。これを確実にするには、ajax呼び出しのコールバックメソッドまたはストアのロードイベントでコンボボックスを設定します。

Ext.js 4.1のドキュメントを調べましたが、このメソッドはまだ存在しているようです。これでうまくいくと思います。

編集:明快さ

于 2012-06-12T15:55:34.140 に答える
0

プログラムで、combo.setValue(val) を使用するか、宣言的に:

{
    xtype: 'combo',
    value: val,
    ...
}
于 2013-12-12T11:28:29.503 に答える
0

クリストファーの助けのおかげで、コードの作業バージョンを書きました。ここに投稿することにしました。誰かにとって役立つかもしれません...:

buttons: [{
    text: 'Load',
    handler: function(){
        var form = this.up('form').getForm();
        var combobox = form.findField('ref_id_combo');
        formPanel.getForm().load({
            url: <?php echo "'update_loader.php?id=".$_GET['id']."&item=customer',"; ?>
            waitMsg: 'Loading...',
            success: function(form, action) {
                combobox.setValue(<?php echo  get_property_id("ref_id","customer",$_GET['id']);?>);
            }
        });
    }
 }
于 2012-06-13T11:17:55.610 に答える
0

最初に独自のストアを作成する場合は、使用できますafterrender: function(combo){}

listeners: {
    afterrender: function (combo) {
        var record = yourStore.getAt(0);
        var abbr= record.get('abbr');
        combo.setValue(abbr);
    }
}
于 2016-07-17T05:08:52.707 に答える