0

チェックボックスと 2 つの数値フィールドを 1 つの列に配置する方法はありますか? 何かのようなもの

+-------------------------------------+-----------------------+
| | 列 1 | コラム 2 |
+-------------------------------------+-----------------------+
| | | | CB NF NF |
+-------------------------------------+-----------------------+
| | | | CB NF NF |
+-------------------------------------+-----------------------+
| | | | CB NF NF |
+-----------------------------------------------------+
4

1 に答える 1

3

「標準」の方法では、機能を使用して行/列のテンプレートを編集し、id を持つ div を含めてから、構成を使用してコンポーネントをそれらの div にレンダリングしますrenderTo。ただし、行ごとではなく列ごとに作業しているため、より簡単なアプローチを取ることができます。

列構成で、次のようなカスタム レンダラーを使用します。

// May not be exact, I just came up with this on the spot
renderer: function(value, metaData, record, rowIdx, colIdx, store, view) {
    return [
        "<div id='combobox_", rowIdx, "'></div>",
        "<div id='numberfield_1_", rowIdx, "'></div>",
        "<div id='numberfield_2_", rowIdx, "'></div>"
    ].join("");
}

したがって、この列の各セルには、一意の ID を持つ 3 つの div があります (「rowIdx」を、record.id などの他の識別方法に置き換える必要がある場合があります)。次に、コンポーネントを作成し、それらをレンダリングしたままにするのはあなた次第です。

refreshグリッドのビューのメソッドは、並べ替え、フィルタリング、列の非表示など、グリッドが更新されるたびに呼び出されることに注意してください。したがって、afterrefreshイベントまたは同様のものを監視し、必要に応じてコンポーネントを再レンダリングする必要があります。レンダリングされたコンポーネントをだまして再レンダリングするには、 を使用myComponent.rendered = false; myComponent.render();し、それが機能するはずです。

このプロセスの大部分を管理するプラグインが作成されている可能性がありますが、これが基本的な概念です。きれいではありませんが、機能します。

于 2012-04-12T17:38:42.970 に答える