0

Web アプリケーションに DGrid を使用して調査しています。これに似たテーブルを作ろうとしています。上記の例のコードはこちらです。

テーブルはデータのソースとしてメモリ ストアを使用します。各行をクリックして展開すると、そこにある集計フィールドが表示されます。

ページの残りの部分と一緒に静的にロードされるのではなく、行をクリックしたときにサーバーから詳細 (つまり、行をクリックしたときに表示されるテキスト) をフェッチする必要があります。上記のコードを変更してそれを行うにはどうすればよいですか?

(私の要件は、クリックすると各行が展開可能なHTMLテーブルの要件です。各展開のデータは、たとえばAJAXを使用してサーバーから取得されます。並べ替え可能な列を無料で取得できるため、オプションとしてdgridを検討していますdgrid. より良いオプションがあれば教えてください)

編集: 基本的に、私はそれを行うためのアイデアを探しており、誰かが実際にコードを提供してくれることを期待していません。Dojo に慣れていないので、どのアプローチが正しいのかわかりません

4

1 に答える 1

1

ajax 呼び出しが html を返す場合、レンダラーに dijit/layout/ContentPane を配置し、取得するコンテンツの URL を ContentPane の href プロパティに設定できます。初期データ (例のメモリ ストアに相当するもの) に、遅延ロードする URL を含む "yourServiceCallHref" というプロパティがあると仮定すると、次のように試すことができます。

require(["dijit/layout/ContentPane", ...], function(ContentPane){

    renderers = {
        ...,
        table: function(obj, options){
            var div = put("div.collapsed", Grid.prototype.renderRow.apply(this, arguments)),
                cp = new ContentPane({
                    href : obj.yourServiceCallHref
                }),                       
                expando = put(div, "div.expando", cp.domNode);
                cp.startup();
        return div;
    }
});

サービスが json を返す場合、おそらくdojo/requestで同様の方法で何かを行うことができます。リクエスト コールバックに dom 作成手順を追加し、それらを「expando」という div 内に配置するだけです...

もう 1 つのオプションは、メモリ ストアをJsonRestストアに置き換え、メモリ ストアで表示されるものと同じ json 形式をサーバーに出力させることです。つまり、すべてのデータが 1 回の呼び出しでフェッチされることになります...

于 2013-08-22T18:15:48.693 に答える