博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

VS2005下BoundField的DataFormatString不起作用了?

Posted on 2008-01-08 15:45  孤峰皓月  阅读(597)  评论(0编辑  收藏  举报

原因: 项目做好后,客户的服务器安装的是英文操作系统,原来正常显示的时间格式都不大友好了,显示成了 1/8/2008 3:26:03 PM  , 因此需要对时间格式进行设置一下,最后正确显示的结果是:2007-12-24 10:32:14

<asp:TemplateField>
    <ItemTemplate>
    [<%# DataBinder.Eval(Container, "DataItem.UpdateTime", "{0:yyyy-MM-dd HH:mm:ss}")%>]
    </ItemTemplate>
    <ItemStyle CssClass="grdStyle" Width="135px" Font-Size="12px" />
 </asp:TemplateField>
如上例子模板列是可以正常显示的

但是如果用<asp:BoundField 就不起作用了
后来网上查了资料才发现VS2005还要再设置一下 HtmlEncode="false" 才可以了


       我们知道在VS2003甚至VS2005Beta下可以用DataFormatString格式化BoundField数据的输出:
               

<asp:BoundField HeaderText="DisplayText" DataField="FieldName" DataFormatString="{0:F2}">
    
<ItemStyle HorizontalAlign="Right" Width="60px"></ItemStyle>
    
<HeaderStyle HorizontalAlign="Right"></HeaderStyle>
</asp:BoundField>


        但是,很快在VS2005中,你会发现DataFormatString不起作用了。

        这时候,应该同时设置HtmlEncode为false,DataFormatString才会起作用:
       

<asp:BoundField HeaderText="DisplayText" DataField="FieldName" DataFormatString="{0:F2}" HtmlEncode="false">
    
<ItemStyle HorizontalAlign="Right" Width="60px"></ItemStyle>
    
<HeaderStyle HorizontalAlign="Right"></HeaderStyle>
</asp:BoundField>