首页  ·  知识 ·  云计算
GridView中的DataFormatString失效解决办法
pincelee     综合  编辑:dezai   图片来源:网络
在用gridview做数据呈现的时候,很多时候需要用到DataFormatString属性,但是在使用
在用gridview做数据呈现的时候,很多时候需要用到DataFormatString属性,但是在使用的时候发现绑定上去后并没有做到格式化,和原来DataGrid时候的设置是相同的,为什么到这里就不行了呢,而在老版本的DataGrid中执行就没有问题,后来发现是因为gridview中绑定列做格式化是需要设置列的属性HTMLEncode="False",这样DataFormatString才能生效。
<ASP:GridView ID="grvResult" runat="server" AutoGenerateColumns="False" Width="100%">
<Columns>
<ASP:BoundField HeaderText="发布日期" DataField="releaseDate" DataFormatString="{0:yyyy-MM-dd}" HTMLEncode="False">
</ASP:BoundField>
<asp:BoundField DataField="state" HeaderText="状态" HtmlEncode="false" DataFormatString="&lt;img src='images/state_{0}.gif'&gt;&lt;br&gt;&lt;hr size=1 color=#eae6e8&gt;">
</asp:BoundField>
<asp:HyperLinkField DataNavigateUrlFields="id" DataNavigateUrlFormatString="view.aspx?id={0}" DataTextField="caption" HeaderText="标题" DataTextFormatString="{0}&lt;br&gt;&lt;hr size=1 color=#eae6e8&gt;">
</asp:HyperLinkField>
</Columns>
</ASP:GridView>

 
例如上面的代码展示了时间和样式绑定方式。DataFormatString中的{0}是固定的格式,这和String.Fromat(“{0}”, someString)中的{0}是一个用法,表示绑定上下文的参数索引编号。然后,在后面加入格式化字符串,具体的使用方法可以参考MSDN。

 
这里需要注意以下几点
1. 在GridView中的ASP:BoundField使用DataFormatString必须设置属性HTMLEncode="False",否则不起作用。
2. 如果需要使用日期类型的格式化字符串,必须数据实体中对应的字段也应该日起类型的。
3. 格式化字符串C代表货币单位,需要绑定的数据类型应该是数字类型的。如果是字符串类型的不起作用,需要手动添加格式化字符串为DataFormatString="¥{0:C}"。

 
总结:
GridView中使用DataFromatString与在DataGrid中使用起来有些不同的!在GridView中的BoundField新增了HTMLEncode 属性,且默认是true,这就使得DataFromatString失效!
本文作者:pincelee 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读