Spread

Q 14
元のデータを残したまま表示を変更したい

A 14
[解決方法]
サーバから取得したCSVデータをSpreadに代入する際に、表示する文言を変更したいが取得したデータを残しておきたい場合は、表示用の列とは別に非表示の列を定義しそこに入った値によって表示用の列に入る文言を変更する方法があります。

取得したデータを挿入する列のSpreadColumnオブジェクトを「Visible=$false, UseChange=$true」にし、OnChangeイベントパンドラ内にValue値によって表示用の列の値を変更する処理を組み込むことで、実現できます。
CSVデータをSpreadに挿入する際、列名を指定しておかないと、表示用の列に別のデータが反映されてしまうため、ご注意下さい。

また、OnChangeイベントパンドラで行う処理は参照式でも実現することができますが、処理が重くなるため注意が必要です。

詳細な処理についてはサンプルコードを参考にして下さい。


[サンプルコード]
1列目のデータが1だったら「○」、0だったら「×」、""(空)だったら「」を表示する
Spread Spread1 {
    X = 49;
    Y = 58;
    Width = 328;
    Height = 129;
    SpreadRow sr[0] {
        Height = 20;
        /* データ保持用SpreadColumn */
        SpreadColumn sc1 {
            UseChange = $true;
            Visible = $false;
            Function onChange(e) {
                /* 値ごとの処理をここに記述 */
                if (value == "1" ) {
                    ^.sc1_vis.value = "○";
                } else if (value == "0" ) {
                    ^.sc1_vis.value = "×";
                } else {
                    ^.sc1_vis.value = "";
                }
            }
        };
        /* 表示用SpreadColumn */
        SpreadColumn sc1_vis;
        SpreadColumn sc2;
        SpreadColumn sc3;
    }
    if (!$DESIGNTIME) {
        var csv_data = new CSVDocument;
        /* ダミーデータ作成 */
        csv_data << CSV {
            1,1,2
            0,1,2
            ,1,2
        };
        /* 列名付加 */
        csv_data.setColumnName(0,"sc1");
        csv_data.setColumnName(1,"sc2");
        csv_data.setColumnName(2,"sc3");
        /* 値代入 */
        sr << csv_data;
    }
}
管理番号:Spd_014
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ