0

そのため、ユーザーがグリッドに再度ログインしたときに保存された方法でEXTページンググリッドの状態をサーバーに保存する方法について、インターウェブを調べてきました。

私はこのhttp://www.sencha.com/forum/showthread.php?64688-How-can-i-save-Grid-state-using-GXTを見つけましたが、それは古くて死んだスレッドです。

私が今持っているのは:

grid.getState()は、すべての列サイズ、並べ替え、および非表示フィールドのマップを返します。

文字列にダンプされた例を次に示します。

{offset = 0、limit = 25、widthfieldname1 = 161、widthfield2 = 110、hiddenfield3 = true}

これらのキー/値をフィールド(ユーザー名、キー、値)を含む単純なテーブルに格納し、このマップを再作成してフロントエンドに渡すことができます。

だからここに私の質問があります:

GXT 2.4のグリッド状態を保存、取得、適用する完全な実装のコード例を持っている人はいますか?

そうでない場合。どうすれば実装できますか?状態マップをデータベースまたはXMLに保存できると確信しています。これを新しいセッションに適用する方法がわかりません。この状態マップを新しいグリッドに適用するにはどうすればよいですか?

4

1 に答える 1

1

状態管理は、すでに多くのコンポーネントに組み込まれており、グリッドにも組み込まれています。デフォルトの GXT 実装では、Cookie ( を参照com.extjs.gxt.ui.client.state.CookieProvider) を使用してグリッドの状態を保存します。必要なのは、グリッドをステートフルにして、一意の stateId を与えることだけです。

grid.setStateful(true);
grid.setStateId("myGridUniqueId");

他のストレージが必要な場合は、 を拡張し、com.extjs.gxt.ui.client.state.Providerストア/ロード ロジックを実装してから に渡す必要がありますcom.extjs.gxt.ui.client.state.StateManager。これは非常に簡単です。

public static class MyProvider extends Provider {

    @Override
    protected void clearKey(String name) {
        // clearing logic
    }

    @Override
    protected String getValue(String name) {
        // read logic
    }

    @Override
    protected void setValue(String name, String value) {
        // store logic
    }
}

StateManager.get().setProvider(new MyProvider());

GXT3 では状態管理が変更されていることにも注意してください。近い将来に 3.0 に移行する必要がある場合は、この点に注意してください。

于 2012-11-07T07:55:28.050 に答える