null許容型のdecimal型にデータバインドするとき、書式設定された数値を入力できない
対象製品
MultiRow for Windows Forms 5.0J
発生環境
動作保障環境と同じ
状況
修正済み
詳細
文字列型セルを次の設定でnull許容型のdecimal型にデータバインドするとき、"10,000"のようにカンマで書式設定された数値を入力するとSystem.Exception(DataError)が発生します。
TextBoxCell.Style.Format = "N0";
TextBoxCell.Style.Format = "N0";
回避方法
この現象はService Pack 2 (v5.0.2011.0513)で修正されています。
最新のService Packのダウンロードはこちら 。
または、この現象を回避するためにGcMultiRow.CellParsingイベントを実装します。
[Visual Basic]
Imports GrapeCity.Win.MultiRow
Private Sub GcMultiRow1_CellParsing(ByVal sender As System.Object, ByVal e As CellParsingEventArgs) Handles GcMultiRow1.CellParsing
If e.DesiredType Is GetType(Nullable(Of Decimal)) Then
Dim sValue As String = String.Concat(e.Value)
sValue = sValue.Replace(",", String.Empty)
Dim dValue As Decimal
If Decimal.TryParse(sValue, dValue) Then
e.Value = dValue
e.ParsingApplied = True
End If
End If
End Sub
[C#]
using GrapeCity.Win.MultiRow;
private void gcMultiRow1_CellParsing(object sender, CellParsingEventArgs e)
{
if (e.DesiredType == typeof(Nullable))
{
string sValue = string.Concat(e.Value);
sValue = sValue.Replace(",", string.Empty);
decimal dValue;
if (decimal.TryParse(sValue, out dValue))
{
e.Value = dValue;
e.ParsingApplied = true;
}
}
}
最新のService Packのダウンロードはこちら 。
または、この現象を回避するためにGcMultiRow.CellParsingイベントを実装します。
[Visual Basic]
Imports GrapeCity.Win.MultiRow
Private Sub GcMultiRow1_CellParsing(ByVal sender As System.Object, ByVal e As CellParsingEventArgs) Handles GcMultiRow1.CellParsing
If e.DesiredType Is GetType(Nullable(Of Decimal)) Then
Dim sValue As String = String.Concat(e.Value)
sValue = sValue.Replace(",", String.Empty)
Dim dValue As Decimal
If Decimal.TryParse(sValue, dValue) Then
e.Value = dValue
e.ParsingApplied = True
End If
End If
End Sub
[C#]
using GrapeCity.Win.MultiRow;
private void gcMultiRow1_CellParsing(object sender, CellParsingEventArgs e)
{
if (e.DesiredType == typeof(Nullable
{
string sValue = string.Concat(e.Value);
sValue = sValue.Replace(",", string.Empty);
decimal dValue;
if (decimal.TryParse(sValue, out dValue))
{
e.Value = dValue;
e.ParsingApplied = true;
}
}
}
キーワード
MLTR07648
この文書は、以前は次のバグレポートIDで公開されていました : 8278