数値コントロールで小数点以下の桁数が表示書式より入力書式の方が多い場合、フォーカス取得前と取得後で表示値が異なる場合がある

文書番号 : 25926     文書種別 : 不具合     最終更新日 : 2008/06/28
文書を印刷する
対象製品
InputMan for .NET 2.0J Web Forms Edition
発生環境
動作環境と同じ
状況
修正済み
詳細
小数点以下の桁数が表示書式より入力書式の方が多い場合、サーバー側でValueプロパティを設定すると、実行時のフォーカス取得前と取得後で表示値が異なる場合があります。
このとき、サーバー側では小数点以下の桁数の処理に.NETのSystem.Math.Roundメソッドが使用されますが、クライアント側ではJavaScriptのMath.roundメソッドが使用されます。
.NETのSystem.Math.Roundは偶数丸めにされますが、JSのMath.roundメソッドは四捨五入されるため、両者の実行結果が異なることでこの問題が発生します。
回避方法
この問題は改定第4版(v2.0.2008.829)で修正されました。
不具合を修正した最新のサービスパックは、アップデートページからダウンロードできます。
改定第4版より前のバージョンでは次の方法で回避可能です。

次のJavaScriptコードを追加し、クライアント側のbody.onloadイベントに埋め込みます。

【回避コード(クライアント側スクリプト)】
<script language = "javascript">
function updateNumberText()
{
  var number = FindIMControl("Number1");
  if (!number.UIProcess.IsFocus)
  {
    number.UpdateDisplayText(number.GetDisplayText());
  }
}
</script>
</head>
<body onload = "updateNumberText()"・・・
キーワード
INME06758

この文書は、以前は次のバグレポートIDで公開されていました : 7547