0

enter code hereこんにちは、データ項目を 10 進配列に変換しようとしています。これが私のコードです。

 if (e.Row.RowType == DataControlRowType.DataRow)
        {

            for (; i < 9; )
                {


                    if (!DBNull.Value.Equals(DataBinder.Eval(e.Row.DataItem, headerNames[i])))
                        TotalSales += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, headerNames[i]));
                totals(e.Row.DataItem);
                }

                       }

    }
    public static decimal[] totals(object arr)
    {
        decimal[] res = arr as decimal[];
        decimal[] sRes = res.OfType<decimal>().ToArray();
        return sRes;


    }

dataitem が arr に正常に割り当てられたことがわかります。しかし、ライン

decimal[] res = arr as decimal[];arr を res に割り当てないため、次の行で、値を null にすることはできないというエラーが表示されます。

助けていただけますか?

4

1 に答える 1

0

ここで回答を待っている間に、GridView_DataBound イベントで合計を計算するコードを試してみました。何か良い方法があればコメントしてください。 10 進数値 (文字列)

public static void gridViewTotals1(object sender , EventArgs e)
{
    var grdview = (GridView)sender;
    decimal[,] rowAndColumns = new decimal[grdview.Rows.Count, grdview.Columns.Count];
    decimal n;
    decimal[] totalSalesArray = new decimal[grdview.Columns.Count];
    for (int i = 0; i < grdview.Columns.Count; i++)
    {
        for (int j = 0; j < grdview.Rows.Count; j++)


            if (decimal.TryParse(grdview.Rows[j].Cells[i].Text, out n))
            {
                rowAndColumns[j, i] = Convert.ToDecimal(grdview.Rows[j].Cells[i].Text);
            }

    }
    GridViewRow footerRow = grdview.FooterRow;

    for (int k = 0; k < grdview.Columns.Count; k++)
    {
        decimal totalSales = 0;
        for (int l = 0; l < grdview.Rows.Count; l++)
        {
            totalSales += rowAndColumns[l, k];
            totalSalesArray[k] = totalSales;

            footerRow.Cells[k].Text = String.Format("{0:N2}", totalSales);
        }

    }

}
于 2016-08-18T13:06:07.350 に答える