问题:我想对GRIDVIEW自动创建的一个MONEY类型的列格式化:  (因为MONEY类型有4个小数位,我想格式化成2个)
注意:不是模板列格式化讨论:对一个自动创建的列在绑定后不好格式的话,能不能对数据源进行格式化:
     1、我的数据源是一个DATAVIEW
     
DataView dv = new DataView(dt);
        this.GridView1.DataSource = dv;
        this.GridView1.DataBind();   怎么对这个DV中的一个MONEY列进行格式化呢?

解决方案 »

  1.   


    http://www.cnblogs.com/downmoon/articles/1021139.html
      

  2.   

    <asp:BoundField DataField="amount" HeaderText="amount" DataFormatString="{0:#,###.00}"  HtmlEncode="False" />关键在于HtmlEncode="False"
      

  3.   

    有办法的。。给个思路、  把这个列转化为模板 lable 在后再 RowDataBound 的时候 吧这个lable 找出来 然后取得这个值  格式化 再赋值给这个lable 显示的时候就对了 
      

  4.   

    //or
    <asp:BoundField DataField="amount" HeaderText="amount" DataFormatString="{0:c}"  HtmlEncode="False" />//格式 前面带有¥ 
      

  5.   

    下面的回答请注意 我的这个列是 自动创建的列 使用根本没有这个<asp:BoundField  也没有 TEMPLAGTE模板列
      

  6.   

    <asp:TemplateField HeaderText="订单金额">
    <ItemTemplate>
      <asp:Label ID="lblTotalM" runat="server" Text='<%#Eval("TotalM","{0:c}") %>'></asp:Label>
    </ItemTemplate>
    </asp:TemplateField>
      

  7.   

     BoundField endDate = new BoundField();
                endDate.DataField = dt.Columns["END_DATE"].ColumnName;
                endDate.HeaderText = "完了日";
                endDate.HeaderStyle.Width = Unit.Percentage(10);
                endDate.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
                endDate.HeaderStyle.VerticalAlign = VerticalAlign.Middle;
                endDate.DataFormatString = "{0:d}";
                GridView1.Columns.Add(endDate);不知道是不是你要的
      

  8.   

    用代码创建列也可以
    在创建列的时候,用Convert.ToDecimal或Decimal.TryParse
    http://www.cnblogs.com/downmoon/articles/1019697.html不过建议用sql来做
    select pkid,cast(tMoney as Decimal(10,2)) as tMoney  from  testTable1
      

  9.   

    数据源进行格式化是可以格式化一些类型的,但是你这个好象实现不了.
    你可以看看DataColumn.Expression.这个有一些格式化的功能.但是我未找到格式化成2位小数的方法.
      

  10.   

    sql语句改变不错... 简洁,呵呵