2017-08-24 3 views
-1

私はフォームを持っており、フィールドの値をグリッドに記入する必要があります。フォームから得られた値でグリッドを塗りつぶす?? EXTJS

この時点で、コンボボックスの値は、JSON Storeによって呼び出されてフォームに入力されるPHPファイルのSQLクエリによって取得されます。

私はグリッドデータを塗りつぶすのと同じ方法ですが、グリッドのみの他のストアを使用しています。

実際に私はJSONメソッドでグリッドを塗りつぶします。

これは、グリッドに入力されたいくつかの値を呼び出すJSONストアです。

var store_grid_CC = new Ext.data.JsonStore({ 
//successProperty: 'success', 
url: 'json/distribucion.php?opcion=grid', 
autoLoad: true, 
fields : ['center_name', 'subcenter_id','subcenter_name', 'porc_distribucion'], 
root : 'grid', 
}); 

と私はグリッドをロードするために、このコールを使用してコンボボックスのリスナーで(私はコンボの値を選択すると、グリッドが満たされる必要があるため)

store_grid_CC.load({ 
params:{ subcenter_id: subcenter_id, 
opcion:'grid'} 
}); 

Storeはdistribucion.phpに行きますコンボボックスから取得したsubcenter_idを送信し、次にPHPファイルは、grid_nameの最初の2列に記入されたcenter_nameとsubcenter_nameをSQLクエリで返します(4です)。

しかし、最後の2列には、フォームのテキストフィールドから取得したデータを入力する必要があります。

私の問題は、私はこのグリッドのためのデータを取得する2ウェイメソッドがあることです(JSONの方法と値フォームの方法で)。

私は、コンボボックスの値を含むフォームフィールドからすべてのデータを取得するが、SQL呼び出しとJSON応答を待つことはないと考えている。そうでなければ、CombValフィールドからRawValueを取得するa subcenter_id)。

例:

form.getForm().findField('combobox').RawValue() that return a name. 

とテキストボックスと:コンボボックスの値を用いて呼び出され

form.getForm().findField('textfield').getValue() that return a number. 

GRID:comboRawValue comboRawValue texfieldgetValue texfieldgetValue ROW1

 column1   column2  column3    column4 


ROW2 "車"、 "トラック" 20 100


は、(一例に過ぎません)。

このデータをグリッドストアに格納する必要があります。(Add Row)のようなボタンを押すと、この値が新しい行のグリッドに挿入されます。

私はそれをどうやって行うことができますか?フォームから得られたデータをグリッドストアに書き込む方法は?

私はSimpleStores、JSONStoresで試してみましたが、後でグリッドで読み込むために保存するフォーム値を与える方法はわかりません。私は成功していない。

多くの感謝!

答えて

1

手順1:グリッド列とストアフィールドに使用するフォームフィールドに同じ名前を使用します。

など。フォームフィールド:

items: [{ 
    xtype: 'textfield', 
    fieldLabel: 'Test string', 
    name: 'Test1' 
},{ 
    xtype: 'checkbox', 
    fieldLabel: 'Test bool', 
    name: 'Test2' 
},{ 
    xtype: 'numberfield', 
    fieldLabel: 'Test number', 
    name: 'Test3' 
}] 

たとえば、モデルフィールド:

Ext.define('MyModel',{ 
    extend: 'Ext.data.Model', 
    fields:[{ 
     name: 'Test1', 
     type: 'string' 
    },{ 
     name: 'Test2', 
     type: 'bool' 
    },{ 
     name: 'Test3', 
     type: 'int' 
    }] 
}); 

たとえば、グリッド列:

columns:[{ 
    xtype: 'gridcolumn', 
    text: 'Test string', 
    dataIndex: 'Test1' 
},{ 
    xtype:'checkcolumn', 
    text: 'Test bool', 
    dataIndex: 'Test2' 
},{ 
    xtype: 'numbercolumn', 
    text: 'Test number', 
    dataIndex: 'Test3' 
}] 

手順2:レコードをフォームにバインドします。

新しいエントリを作成し、新しいモデルのインスタンスを作成し、フォームにバインド:

form.setRecord(Ext.create('MyModel')) 

保存し、レコードを更新し、それがまだない場合ストアに追加します。

form.updateRecord(); 
if(store.indexOf(form.getRecord()==-1) store.add(form.getRecord()); 

既存のエントリを編集し、店にレコードを結合しは、例えば5番目のレコード:!おかげでアレクサンダー、ザッツはEXTJS 4で

form.setRecord(store.getAt(4)); 
+0

動作しますか?モデルファイル(extjs6など)で作業していないため、単純なJSONストアで作業していました。最近EXTJSを学習しています。 – Camilo

+0

さて、ExtJS 4では、モデルも必要ですが、ExtJS6ではほとんどのストアはモデルなしで動作することができます。 – Alexander

関連する問題