05-24-2013, 08:12 PM,
|
|||||
|
|||||
レコードの挿入で一番上の行が選択されてしまう
レコードの挿入をするために、インデックスをつけて、選択されている行に追加したレコードが表示されるようにソートしています。
しかし、なぜか、レコードの一番上の行が選択されてしまいます。 batch-events? を利用しないと、現在の選択はそのままとなるのですが、 それだと、レコードの追加に時間がかかってしまいます。 現在のレコードの選択状態を変えないままレコードを挿入するには どうすればよいでしょうか。 Code: {let rs:RecordSet = |
|||||
05-27-2013, 10:52 AM,
|
|||||
|
|||||
RE: レコードの挿入で一番上の行が選択されてしまう
RecordGridに以下を設定してみてください。
key-spec = RecordSetDisplay.preserve-indices |
|||||
05-27-2013, 07:32 PM,
|
|||||
|
|||||
RE: レコードの挿入で一番上の行が選択されてしまう
ヘルプを見ると、 「既存のインデックスおよび選択したものを保存する」とありますね。
私の望む振る舞いをしてくれました。 ありがとうございます。 Code: {curl 8.0 applet} |
|||||
10-28-2013, 06:28 PM,
(This post was last modified: 10-28-2013, 06:31 PM by umemura.)
|
|||||
|
|||||
RE: レコードの挿入で一番上の行が選択されてしまう
batch-event?=true の状態で最初のレコードを append する際には、
key-spec = RecordSetDisplay.preserve-indices を指定していても、 select-current-record? = true である以上は、 必ず一番上のレコードが選択されてしまう、という認識ですが、この認識はあっていますか? 回避策は、レコードの追加処理の前に select-current-record? をfalse にして、 追加処理の後に イベントのディスパッチをしたうえで、 select-current-record? を true に戻す、という方法がありそうですが、 できれば、dispatch-events を使いたくありません。 これ以外の方法はありませんか? Code: {CommandButton |
|||||
09-19-2014, 06:22 PM,
(This post was last modified: 09-19-2014, 06:23 PM by umemura.)
|
|||||
|
|||||
RE: レコードの挿入で一番上の行が選択されてしまう
key-spec = RecordSetDisplay.preserve-indices の設定さえしてあれば、
グリッド内のレコードを、いったんクリア(delete-all)して、 新しいレコードをセットするという一連の処理を with RecordSet.batch-events?=true の中で行うことで、 グリッドのスクロール位置や、選択レコードをそのままの状態にしておけますね。 入力画面などで、DBにいったん登録した後、自動で再検索をおこなうことが多いのですが、 スクロール位置や選択レコードがクリアされてしまうと、 さっきまで修正していたレコードがどれかわからなくなってしまうため、 このやり方でなら状態を保持でき、望ましい振る舞いになりました。 Code: {def rf-ary = {{Array-of RecordField}}} |
|||||
« Next Oldest | Next Newest »
|
Users browsing this thread:
2 Guest(s)
2 Guest(s)