2016-08-16 12 views
0

enter code hereこんにちはデータ項目を10進数の配列に変換しようとしています。gridview dataitem to小数配列

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[];は、resにarrを割り当てないので、次の行で値がnullになり得ないというエラーが表示されます。

助けてもらえますか?

答えて

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

    } 

} 
関連する問題