ホームページ >ウェブフロントエンド >jsチュートリアル >extjsリストボックスにリスト項目を動的に追加する方法(multiselect)_extjs

extjsリストボックスにリスト項目を動的に追加する方法(multiselect)_extjs

WBOY
WBOYオリジナル
2016-05-16 18:48:561540ブラウズ

これは作成時に自動的にロードされる ArrayStore (キーワード: data: ds) であるため、動的追加の例はありませんが、プロジェクトには 3 つのリスト ボックスが必要で、最後の 2 つの内容は最初のリスト ボックスの内容を動的にロードするため、最初のリスト ボックスの内容を選択すると、最後の 2 つのリスト ボックスの内容が動的に入力される必要があります。exjts のサンプル作成者は、このような関数を作成していません。バージョン 2.2 の以前の例はインターネット上に見つからなかったので、リスト データを動的に制御する機能を 1 日かけて探しました。 まず、私の方法は公式の方法ではありません。以下は私が思いついたアイデアです。
メソッドの前に、複数選択オブジェクトのストアは次のように定義されています。 🎜>コードをコピーします

コードは次のようになります: flowDs = new Ext.data.ArrayStore({ data: [[123,123]], フィールド: ['値','テキスト']
} );


(1)var toflowStore = msForm.getForm().findField('toflow').store;名前に基づいた複数選択オブジェクトのストア オブジェクト;
(2) Ext.data.Record オブジェクトの作成、これは私が長い間追加しようと考えていたメソッドであり、あまりにも愚かだったので自分を責めています。 :



コードをコピー
コードは次のとおりです。 var Record = new Object(); record.value = "2"; record.text = "3";
var records = new Ext.data.Record(record);作成した Ext.data.Record オブジェクトを複数選択ストア オブジェクトに追加します。
toflowStore.add(record1);
上記の 3 つの手順を通じて、リスト項目をリスト複数選択に動的に追加できます。具体的な使用方法はサンプルコードのItemSelector.jsにあります。
上記の分析により、multiselectの作成ルールを大まかに見積もることができます。ストア内の属性フィールド: ['value', 'text'] 作成時、システムは属性データをループします: [[123,123]] のコンテンツはオブジェクト オブジェクトとして作成され、そのオブジェクトに書き込まれます。次のコードのようなストア オブジェクト:



コードをコピー


コードは次のとおりです:
var item = [],itemObj,record; for(var i = 0; i< this.data.length;i ){ item = this.data[i]; itemObj = 新しいオブジェクト(); itemObj.value = item[0]; itemObj.text = item[1];
this.store.add (record);
}


上記は、extjs のエンジニアが注意深く設計した方法ではないでしょうか。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。