0

グリッドビューで値を合計する次のコードがありますが、行に「入力文字列が正しい形式ではありませんでした」というエラーが表示されます

cell1 += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "CTDActual"));

これは完全なスニペットです:

decimal cell1 = 0;

protected void linqGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        cell1 += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "CTDActual"));
    }
    if (e.Row.RowType == DataControlRowType.Footer)
    {
        e.Row.Cells[3].Text = cell1.ToString("C");
    }
}

DataItem 値をコンソール ウィンドウに出力しようとしましたが、何も表示されません。この問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

これを試してください:

cell1 += Convert.ToDecimal((DataBinder.Eval(e.Row.DataItem, "CTDActual").ToString()==""?"0":DataBinder.Eval(e.Row.DataItem, "CTDActual")));

爆発する理由はDbNull.Value、データベースからを取得しているためである可能性が高く、数値Convert.ToDecimalに変換する方法がわからないため、 が爆発し""ます。

アップデート:

これは間違いなく機能します:

decimal temp = 0M;
decimal.TryParse(DataBinder.Eval(e.Row.DataItem, "CTDActual").ToString(), out temp);
cell1+=temp;
于 2013-07-19T20:12:57.380 に答える