gridview dataitem到十进制数组

时间:2016-08-16 15:02:10

标签: arrays gridview dataitem

enter code here您好我尝试将dataitem转换为十进制数组,这是我的代码;

 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;


    }

我可以看到数据项目已成功分配给arr。 但行

decimal[] res = arr as decimal[];没有将arr分配给res,所以下一行给出了一个错误,抱怨该值不能为null。

你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

当我在这里等待答案时,我尝试并想出了一个在GridView_DataBound事件中计算总数的代码,请评论是否有什么可以更好,以及如何不显示列下的总数(0.0)没有小数值(即字符串)

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);
        }

    }

}