2009-12-03 3 views
0

Есть ли способ форматировать значение столбца столбца gridview как валюту. Я установил DataFormatString из BoundField в {0: c}, но это, похоже, не влияет на нижний колонтитул. Должен ли я делать это в событии RowDataBound?Строка данных нижнего колонтитула Gridview

ответ

0

я в конечном итоге делает это таким образом, похожее на это ...

protected void gridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    double dVal = 0.0; 

    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     dVal += Convert.ToDouble(e.Row.Cells[1].Text); 
    } 

    if (e.Row.RowType == DataControlRowType.Footer) 
    { 
     e.Row.Cells[1].Text = dVal.ToString("c"); 
    } 
} 
0

У вас установлен HtmlEncode = "False" на нижнем колонтитуле?

Редактировать: это была известная проблема на некоторое время.

0

Это ляп. (sp?)

Но иногда перед лицом известных проблем у вас есть kludge. (? Зр)

private static string FormatByGridView(object value, string DataFormatString) 
{ 
    GridView grid = new GridView(); 
    DataTable table = new DataTable(); 
    table.Columns.Add("value", value.GetType()); 
    var row = table.NewRow(); 
    row["value"] = value; 
    table.Rows.Add(row); 
    grid.Columns.Add(new BoundField() { DataField = "value", DataFormatString = DataFormatString }); 
    grid.DataSource = table; 
    grid.DataBind(); 
    return grid.Rows[0].Cells[0].Text; 
} 
0

Это работает для меня:

if (e.Row.RowType == DataControlRowType.Footer) 
{ 
    e.Row.Cells[2].Text = string.Format("{0:#,###,###.00}", total2013); 
    e.Row.Cells[3].Text = string.Format("{0:#,###,###.00}", total2014); 
}