2

String を Decimal に解析しようとしていますが、formatException が発生し続けます

Dim row as GridViewRow
    for each row in grdActieRittenActiefAlt.rows
        Dim rbl as RadioButtonList = row.FindControl("tblAddAct")
        'toevoegen = true
        if rbl.SelectedItem.Value = true then
            Dim opgaveIdent as Integer = Convert.ToInt32(grdActieRittenActiefAlt.DataKeys(row.RowIndex).Value.ToString())

            Dim curOldTarief as Decimal = Convert.ToDecimal(lblCuratiefTarief.Text)
            Dim curOldKorting as Decimal = Convert.ToDecimal(lblCuratiefKorting.Text)

            Dim curTariefString as String = row.Cells(4).Text
            Dim curKortingString as String = row.Cells(6).Text

            Dim curTarief as Decimal = Convert.ToDecimal(curTariefString)
            Dim curKorting as Decimal = Convert.ToDecimal(curKortingString)

            lblCuratiefTarief.Text = (curOldTarief + curTarief).ToString()
            lblCuratiefKorting.Text = (curOldKorting + curKorting).ToString()


        end if
    next row

入力は 431,25 です。

これまでのところ、次のことを試しました。

  • .Replace(",",".") を使用してコンマをコロンに変更する => 機能しませんでした
  • 強制的な CultureInfo の使用 => 機能しませんでした
  • row.Cells(4).Text を直接使用 => 機能しませんでした
  • 部分文字列クエリを使用して、ラウンド番号 (431) のみを取得します => 機能しましたが、解決策にはなりません
  • 他に何か提案はありますか?

    4

    2 に答える 2

    2

    さらに多くのテストと試行を行った後、問題の回避策/解決策を見つけました。

    row.Cells(4).Text はバインドされたフィールドでした。これをラベル付きの TemplateField に変更しました。ローカル変数 (Label) を作成し、それを使用して小数を変換することで機能します。理由はわかりませんが、私にとっては今のところ解決策です。

    于 2012-11-29T11:16:09.047 に答える
    0

    FormatNumber 関数を試しましたか?

    FormatNumber(number, 2)
    

    2 は小数点以下の桁数です。

    于 2012-11-29T17:35:58.663 に答える