2016-08-16 15 views
0

enter code here你好,我尝试将数据项转换成十进制数组,这里是我的代码;gridview 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; 


    } 

我可以看到dataitem成功分配给arr。 但是行

decimal[] res = arr as decimal[];不会将arr分配给res,所以下一行给我一个错误,抱怨该值不能为空。

你能帮忙吗?

回答

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

    } 

} 
相关问题