トップ 差分 一覧 ソース ヘルプ RSS ログイン

FormTable

FormTable

データグリッドFormTableを提供します。

FormTableは、FormFieldColumnの配列を含むコンポジットなコントロールです。

FieldColumnはColumnを継承し、そして列の値を表示するためのフィールドオブジェクトを所持します。テーブル内のそれぞれのセル<td>が、一意な名前を持つフィールドを含み、列のフィールドとして出力されます。

テーブルのデータがポストされたとき、送信された値は、flyweightスタイルのVisitorパターンを用いて列のフィールドオブジェクトとして処理されます。言い換えれば、列フィールドのインスタンスは再利用され、ポストされた全ての値を処理します。

FormTableの変更が送信された後、変更された値はテーブルの行リストに含まれるオブジェクトに反映されます。ポストされたデータが、そのフィールドの制約条件により無効であった場合、フィールドのエラーがテーブル上にハイライト表示されます。フィールドのエラーメッセージは、title属性のtooltipの値として表示されます。

FormTableを利用する場合、rowListプロパティはコントロールが処理される前に必ず生成され、送信されたデータの値はいずれもrowListオブジェクトに反映されます。

このことは、一般的にはFormTableのrowListがページのonInit()メソッド中で生成されるべきだということを意味しています。rowlistがページのonRender()メソッドで生成されることが一般的なTableコントロールとは違うことに注意してください。

 FormTableの使用例

FormTableの使用例を以下にあげます。この例では、上の画像で例示したFormTableを出力します。

この例ではonCancelClick()ボタンで、データベースから値を再読み込みを実施し、送信した値をFormTableに表示させないことで、rowListオブジェクトに対しての変更をロールバックしていることに注意してください。