Thread Rating:
  • 314 Vote(s) - 2.87 Average
  • 1
  • 2
  • 3
  • 4
  • 5
RecordGrid 行の背景色制御について
05-10-2013, 03:25 PM,
#4
RE: RecordGrid 行の背景色制御について
>Notified? とは別のフィールド(HiddenNotifiedなど)を用意して、グリッドにカラムとして表示しない、というのも手かもしれませんね。

レコードから更新前の値を取り出す方法を書いてみたものの、そちらの方法の方が安全確実でよさそうですね
ある任意の状態でのNotified?の値をずっと参照したいというケースでも、そのタイミングでHiddenNotifiedへ転記すれば済みますし。

試しに隠しフィールドを使う方法でコードを書いてみましたがこんな感じでしょうか?
Code:
{include "../../default/support/data-long.scurl"}

|| HiddenNotified? フィールドを追加したレコードセットを生成するプロシージャ
{define-proc {make-new-recordset src-rs:RecordSet}:RecordSet
    def src-field-name = "Notified?"
    def dup-field-name = "HiddenNotified?"

    || 新規レコードセット作成用にレコードフィールド一覧の配列を作成
    let record-field-array:{Array-of RecordField} = {new {Array-of RecordField}}
    {for rf:RecordField in src-rs.fields do
        {record-field-array.append rf}
    }
    || レコードフィールド一覧配列に追加するフィールドを追加
    {record-field-array.append {RecordField dup-field-name, domain = bool}}
    || レコードフィールド一覧配列より新規レコードセットを作成
    let new-records:RecordSet =
        {RecordSet
            {RecordFields
                {splice record-field-array}
            }
        }

    || 新規レコードセットにデータを複製
    {for src-rec:Record in src-rs do
        let new-rec:Record = {new-records.new-record}
        {for src-rf:RecordField in {src-rec.record-set.fields.to-Iterator} do
            def field-name = src-rf.name
            def field-val = {src-rec.get field-name}
            {new-rec.set field-name, field-val}
            || 複製対象のフィールドの場合は複製先フィールドにも値をセット
            {if {field-name.equal? src-field-name} then
                {new-rec.set dup-field-name, field-val}
            }
        }
        {new-records.append new-rec}
    }

    {return new-records}
}

|| HiddenNotified? フィールドを追加したレコードセットを生成
{let new-records:RecordSet = {make-new-recordset records}}


{define-proc public {notified rg:RecordGrid, r:Record, i:int}:#Background
    ||  "Notified?" ではなく、隠しフィールド "HiddenNotified?"を参照して背景色を設定
    {if {r.compare-field "HiddenNotified?", true} == 0 then
        {return  {Background.from-string "silver"}}
     else
        {return null}
    }
}

{RecordGrid
    record-source = new-records,
    height = 10cm,
    width = 13cm,
    row-background-spec = notified,
    || record-source 内のフィールドに対するカラムの自動生成を無効に設定
    automatic-columns? = false,

    || 表示するカラムを明示的に生成
    {RecordGridColumn "User ID"},
    {RecordGridColumn "Last"},
    {RecordGridColumn "First"},
    {RecordGridColumn "City"},
    {RecordGridColumn "State"},
    {RecordGridColumn "Date"},
    {RecordGridColumn "Time"},
    {RecordGridColumn "Rank"},
    {RecordGridColumn "Notified?"}
}
Reply


Messages In This Thread
RE: RecordGrid 行の背景色制御について - by dyoshida - 05-10-2013, 03:25 PM
Forum Jump:


Users browsing this thread:
1 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('893')