2016-08-16 2 views
0

enter code here Привет, я пытаюсь преобразовать dataitem в десятичный массив, вот мой код;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); 
     } 

    } 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^