0

これはextJSを使用する最初のバッシュであり、数時間苦労した後、エッジケースで2000アイテム未満にフィルターできないコンボリストがあることを除いて、いくつかのことがうまく機能しています。リモートでリストをページングしますが、私は何か間違ったことをしているに違いありません。

私のデータストアとコンボは次のようになります。

var remoteStore = new Ext.data.JsonStore({
        //autoLoad    : true,
        url         : 'addition-lists.aspx',
        fields      : [{name: 'extension_id'}, {name: 'extension'}],
        root        : 'extensionList',
        id          : 'remoteStore'               
    });
.
.
                        xtype         : 'combo',
                        fieldLabel    : 'Remote',
                        name          : 'remote',
                        displayField  : 'extension',
                        valueField    : 'extension_id',
                        mode          : 'remote', 
                        //pageSize      : 20,
                        triggerAction : 'query',  
                        typeAhead     : true,                    
                        store         : remoteStore,
                        anchor        : '95%'

コンボはローカルでの読み込みで機能しますが、リモートに切り替えるとすぐに空白のままになります。

JSONを返すASP.NETページは次のようになります。

protected void Page_Load(object sender, EventArgs e)
{
    Response.Clear();
    Response.Write(GetRemote());
}
4

5 に答える 5

2

リモートストアでは、コンボのデフォルトのminCharsプロパティは4であるため、クエリは4文字を入力した後にのみ送信されます。設定するminCharsと、ほぼ望ましい動作が得られます。

オートコンプリートで検索されたアイテムが現在のページにある場合でも、新しいサーバークエリが送信され、デフォルトで新しいページの最初のアイテムが選択されるためです。

于 2009-05-17T13:13:49.047 に答える
1

上記でストアを構成した方法で、ASP スクリプトの結果は次のようになります。

{"extensionList": [
  {"extension_id": 1, "extension": "js"},
  {"extension_id": 2, "extension": "aspx"}
]}

そのように見えない場合、リモート ストアは何も見つけられません。

于 2009-06-04T08:31:17.413 に答える
0

いくつかのこと。まず、これを行うとき:

remoteStore.loadData(<%= GetRemote()%>);

実際には、JavaScriptからリモート呼び出しを行っているわけではありません。GetRemoteサーバー関数を呼び出した結果を、レンダリング時にページに直接エコーします。おそらくあなたが意図したものではありませんか?GetRemoteがコンボデータを書き出している(そして正しく機能している)場合は、ローカルデータにコンボセットアップを使用できるはずです。本当にリモート呼び出しを行うことが目的の場合は、Extに付属するいくつかの例に示すように、サーバータグを削除し、プロキシURLを介してデータをロードする必要があります。

もう1つのことは、Page_Loadコードは、データのロード、フォーマット、または返送の方法について実際には何も表示しないということです。ソースを表示して、タグが実際に期待するデータに置き換えられていることを確認することをお勧めします。データをロードするために真のリモート呼び出しに切り替えると、Firebugを使用してXHR呼び出しを検査し、その方法でデータが送信されることを確認できます。

于 2009-05-18T16:15:40.777 に答える
0

この質問を参照できます IEのExtJSコンボボックスの問題

于 2009-05-17T10:10:19.300 に答える
-1

プロキシを設定する必要があります。

proxy: new ScriptTagProxy

「ストア」をリモートでロードするためのプロパティ。正確な構文については、例を参照してください。

編集: JsonStore ショートカットを使用しているため、以前のメモは無視してください。

これらのプロパティをすべてコンボに適用してみてください。

   typeAhead: true,
   typeAheadDelay: 500,
   triggerAction: 'all',
   selectOnFocus:true,

また、(loadData を使用して) サーバー側でレコードのプリフェッチを行わないでください。内部フィルターに非常に悪影響を与えるため、さまざまなプリフェッチからフィルター処理されたレコードに固執します。一方、サーバー側ですべてのレコードをプリフェッチする場合、なぜコンボにリモート アクセスが必要になるのでしょうか?!

于 2009-05-17T11:08:41.610 に答える