Gridview页脚数据格式字符串

时间:2009-12-03 21:20:53

标签: c# asp.net

有没有办法将gridview列页脚值格式化为货币。我将BoundField的DataFormatString设置为{0:c},但这似乎不会影响页脚。我是否必须在RowDataBound事件中执行此操作?

4 个答案:

答案 0 :(得分:0)

您是否在页脚上设置了HtmlEncode =“False”?

编辑:这已成为一个已知问题。

答案 1 :(得分: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");
    }
}

答案 2 :(得分:0)

这是一个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;
}

答案 3 :(得分: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);
}