【スクリプト】編集した数値に直ぐに書式を設定したい

文書番号 : 23280     文書種別 : 使用方法     最終更新日 : 2006/12/21
文書を印刷する
対象製品
SPREAD for .NET 2.5J Web Forms Edition
詳細
製品の数値型セルで、数字を3桁ごとにカンマで区切って表示するなど書式を設定している場合、編集すると書式が取り払われます。

(例)編集前:「1,000」-> 編集後:「1000」

これは製品の実装上の動作で次のいずれかを行うことで編集内容が確定され書式が設定されます。

 ・コマンドバーの「更新」ボタンを押す(ポストバックが発生します)。
 ・ButtonのクリックイベントなどでポストバックしFpSpread1.SaveChanges()を実行する。

ただ、ポストバックすることなく編集直後に書式を設定したいという場合はクライアント側のonEditStoppedイベントで書式を設定する方法があります。
下記サンプルコードです。

[サンプルコード]

●VBサンプルコード
---------------------------------
サーバー側
---------------------------------
Imports FarPoint.Web.Spread
Imports System.Globalization
     :
    '整数型セルの設定
    Dim ic As New FarPoint.Web.Spread.IntegerCellType
    Dim ninfo As NumberFormatInfo = CType(CultureInfo.CurrentCulture.NumberFormat.Clone(), NumberFormatInfo)
    ninfo.NumberGroupSizes = New Int32() {3} '整数部は3桁区切り
    ic.NumberFormat = ninfo

    FpSpread1.Sheets(0).Columns(0).CellType = ic 'セル型を1列目に設定
    FpSpread1.Sheets(0).Cells(0, 0).Value = 1000

---------------------------------
クライアント側
---------------------------------
    <script type="text/javascript">
      function window.onload(){
        var s=document.getElementById("FpSpread1");
        s.onEditStopped=es;
      }
      function es(){
        var s=event.srcElement;
        var r=s.ActiveRow;var c=s.ActiveCol;
        if(c==0){//1列目が編集された時のみ処理を行う
          var td=s.GetCellByRowCol(r,c);
          var v=s.GetValue(r,c);
          td.innerText=setFormat(v);          
        }
      }
      function setFormat(val){
        //数値を3桁区切りにする
        var v=val;
        var t;  
        while (v != (t = v.replace(/^([+-]?¥d+)(¥d¥d¥d)/,"$1,$2")))
          v = t;
        return v;
      }
          
    </script>


●C#サンプルコード
---------------------------------
サーバー側
---------------------------------
using FarPoint.Web.Spread;
using System.Globalization;
     :
  //整数型セルの設定
  IntegerCellType ic=new IntegerCellType();
  NumberFormatInfo ninfo=(NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone();
  ninfo.NumberGroupSizes=new Int32[]{3};//整数部は3桁区切り
  ic.NumberFormat=ninfo;


  FpSpread1.Sheets[0].Columns[0].CellType=ic;//セル型を1列目に設定
  FpSpread1.Sheets[0].Cells[0,0].Value=1000;

---------------------------------
クライアント側
---------------------------------
VBサンプルコードと同様
キーワード
HowTo クライアント側スクリプト

この文書は、以前は次のFAQ IDで公開されていました : 9876