Thread Rating:
  • 554 Vote(s) - 2.76 Average
  • 1
  • 2
  • 3
  • 4
  • 5
レコードの挿入で一番上の行が選択されてしまう
09-19-2014, 06:22 PM, (This post was last modified: 09-19-2014, 06:23 PM by umemura.)
#5
RE: レコードの挿入で一番上の行が選択されてしまう
key-spec = RecordSetDisplay.preserve-indices の設定さえしてあれば、
グリッド内のレコードを、いったんクリア(delete-all)して、
新しいレコードをセットするという一連の処理を with RecordSet.batch-events?=true の中で行うことで、
グリッドのスクロール位置や、選択レコードをそのままの状態にしておけますね。

入力画面などで、DBにいったん登録した後、自動で再検索をおこなうことが多いのですが、
スクロール位置や選択レコードがクリアされてしまうと、
さっきまで修正していたレコードがどれかわからなくなってしまうため、
このやり方でなら状態を保持でき、望ましい振る舞いになりました。


Code:
{def rf-ary = {{Array-of RecordField}}}

{for i:int = 1 to 10 do
    {rf-ary.append {RecordField {String i}, nullable? = true}}
}

{def rs = {RecordSet {RecordFields {splice rf-ary}}}}


{def grid = {RecordGrid
                width =5in, height = 3in
                ,key-spec =  RecordSetDisplay.preserve-indices
                , record-source = rs
                ,select-current-record? = true
            }}

{value grid}


{CommandButton
    label = "レコード選択位置が変わらない",
    {on Action do
        {with rs.batch-events? = true do
            {rs.delete-all}
            {for i:int = 1 to 100 do
                def new-r = {rs.new-record}
                {for rf in rs.fields do
                    set new-r[rf.name] = {String i}
                }
                {rs.append new-r}
            }
            {rs.commit}
        }
    }
}


{CommandButton
    label = "レコード選択位置が一番上になる",
    {on Action do
        {rs.delete-all}
        {with rs.batch-events? = true do
            {for i:int = 1 to 100 do
                def new-r = {rs.new-record}
                {for rf in rs.fields do
                    set new-r[rf.name] = {String i}
                }
                {rs.append new-r}
            }
            {rs.commit}
        }
    }
}


Messages In This Thread
RE: レコードの挿入で一番上の行が選択されてしまう - by umemura - 09-19-2014, 06:22 PM
Forum Jump:


Users browsing this thread:
4 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('902')