セルが表示されているレコードが正しく取得できない - Printable Version +- Curl Global Community (https://communities.curl.com) +-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1) +--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2) +--- Thread: セルが表示されているレコードが正しく取得できない (/showthread.php?tid=1011) |
セルが表示されているレコードが正しく取得できない - umemura - 11-25-2013 あるセルに入力された金額の消費税額を、同じレコードの消費税費カラムのセルに表示したいです。 下記のコードでは、常に、「最初にフォーカスを入れたセルのレコード」の消費税フィールドに 値が設定されてしまいます。 なぜでしょうか。 Code: {define-class public CustomCell {inherits StandardStringCell } RE: セルが表示されているレコードが正しく取得できない - umemura - 11-25-2013 create-editor メソッドでは、そのカラムで利用するテキストフィールドを生成しますが、 1セルにつき1テキストフィールドではなく、 1カラムにつき、1テキストフィールドが生成されているようで、 そのため、 self.record の値が、 「最初にテキストフィールドが生成されたセルのレコード」なってしまっているようでした。 オープンコントロールのソースを参考にして、get-grid-cell を利用することで、 正しく、編集したセルのレコードを取得できるようになりました。 Code: {define-class public CustomCell {inherits StandardStringCell } RE: セルが表示されているレコードが正しく取得できない - umemura - 11-25-2013 先のソースでは、セルに値を入力後、returnキー等を押さずにフォーカスアウトすると、 セルの中の値が正しく反映されずに、消えてしまう、という問題がありました。 デバッグで create-editor で生成したTextField のvalueを確認したところ、 同じくcreate-editor内で追加した ValueFinished のイベントハンドラの前後で、 テキストフィールドの値が異なっていました。 オープンコントロールのソースを見る限り、 SRGTextField のコンストラクタ内でもValueFinished のイベントが追加されており、 その中で、変更前の値が、セルのattempt-update に投げられているようでした。 セルの値が変更されたら何かを行う、という処理は、 create-editor で生成したコントロールの値変更イベントで設定するのではなく、 StandardStringCell.attempt-update をオーバーライドしたほうが良いのかもしれません。 下記のソースであれば、セルの値を変更した直後にフォーカスアウトしても、 値が残るようなことはありませんでした。 Code: {define-class public CustomCell {inherits StandardStringCell } RE: セルが表示されているレコードが正しく取得できない - shimonshoo - 12-05-2013 I have been meaning to write something like this on my website and you have given me an idea. Your post will be rather good. |