GirdView前台数据类型转换
2011-08-10 09:36
239 查看
网址:http://apps.hi.baidu.com/share/detail/15415322
1、 为什么设置了DataFormatString没有效果?
不要忽略BoundField的两个重要属性HtmlEncode和ApplyFormatInEditMode。
HtmlEncode
GridView 使用的 BoundField 与 DataGrid 使用 BoundColumn 不同,BounField 提供了一个 HtmlEncode 属性,提供是否对数据进行HTML编码,降低了 BoundColumn 潜在的Html &Script 嵌入攻击,默认该值是启用的。如果要使用格式化输出,应该关闭此属性。
<asp:BoundField DataField="HireDate" DataFormatString="{0:yyyy年M月d日}" HtmlEncode="false" HeaderText="HireDate" />
ApplyFormatInEditMode
默认情况下,只有当数据绑定控件处于只读模式时,格式化字符串才能应用到字段值。当数据绑定控件处于编辑模式时,若要将格式化字符串应用到显示的值,应该同时将 ApplyFormatInEditMode 属性设置为 true。
<asp:BoundField DataField="HireDate" DataFormatString="{0:yyyy年M月d日}" HtmlEncode="false" HeaderText="HireDate" ApplyFormatInEditMode="true" />
2、 DataFormatString的格式
格式化字符串可以为任意字符串,并且通常包含字段值的占位符。
例如:DataFormatString="aaa{n:bbb}ccc" ,其中的aaa和ccc表示任意的字符串;n是从零开始的参数列表中的字段值的索引,因为每个单元格中只有一个字段值,所以n通常为0;bbb为格式字符串代表所们希望数据显示的格式。
3、 GridView数据常用格式化类型
数字 {0:N2} 12.36
数字 {0:N0} 13
数字 {0:D} 12345 12345
数字 {0:D8} 12345 00012345
数字 {0:F} 12345.6789 12345.68
数字 {0:F0} 12345.6789 12346
数字 {0:G} 12345.6789 12345.6789
数字 {0:G7} 123456789 1.234568E8
货币 {0:c2} $12.36
货币 {0:c4} $12.3656
货币 "¥{0:N2}" ¥12.36
科学计数法 {0:E3} 1.23E+001
百分数 {0:P} 12.25%
日期 {0:D} 2006年11月25日
日期 {0:d} 2006-11-25
日期 {0:f} 2006年11月25日 10:30
日期 {0:F} 2006年11月25日 10:30:00
日期 {0:s} 2006-11-26 10:30:00
时间 {0:T} 10:30:00
时间 {0:t} 10:30
HyperLinkField
特别说明HyperLinkField,是因为实现了DataGrid的HyperLinkColumnd所不支持的,多参数格式化链接。通常我们附加在url后面的QueryString不会只有一个,asp.net 1。x 中只有使用绑定列,然后手动写代码:
<asp:DataGrid id="DataGrid1" runat="server" DataSourceID="SqlDataSource1">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:HyperLink runat="server" Text="View Photo" NavigateUrl='<%# String.Format("photo.aspx?empid={0}&path={1}", Eval("EmployeeID"), Eval("PhotoPath")) %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
现在使用HyperLinkField,看下,省去很多苦力活:)
复制 保存
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" DataKeyNames="EmployeeID" DataSourceID="SqlDataSource1">
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="EmployeeID,City" DataNavigateUrlFormatString="photo.aspx?empid={0}&path={1}"
HeaderText="PhotoPath" Text="View Photo" />
</Columns>
</asp:GridView>
注意:
1、.aspx中 DataNavigateUrlFields 中多个 Field 使用 , (逗号)分隔
2、裕绑定的Url 实际值,不能为完整的绝对的路径(如:/article/4757779.html),而应该提供相对路径(如:Jinglecat/archive/2007/05/20/753284.html),否则该URL整个不会被输出,应该是HyperLinkField内部做了HTML监测,但它又不提供开关属性如BoundField 的HtmlEncode给开发人员,应该算一个bug吧!
空值(Null)处理
如果字段的值为空,则可以通过设置 NullDisplayText 属性显示自定义标题。
通过将 ConvertEmptyStringToNull 属性设置为 true,BoundField 对象,也可以将空字符串 ("") 字段值自动转换为空值。
1、 为什么设置了DataFormatString没有效果?
不要忽略BoundField的两个重要属性HtmlEncode和ApplyFormatInEditMode。
HtmlEncode
GridView 使用的 BoundField 与 DataGrid 使用 BoundColumn 不同,BounField 提供了一个 HtmlEncode 属性,提供是否对数据进行HTML编码,降低了 BoundColumn 潜在的Html &Script 嵌入攻击,默认该值是启用的。如果要使用格式化输出,应该关闭此属性。
<asp:BoundField DataField="HireDate" DataFormatString="{0:yyyy年M月d日}" HtmlEncode="false" HeaderText="HireDate" />
ApplyFormatInEditMode
默认情况下,只有当数据绑定控件处于只读模式时,格式化字符串才能应用到字段值。当数据绑定控件处于编辑模式时,若要将格式化字符串应用到显示的值,应该同时将 ApplyFormatInEditMode 属性设置为 true。
<asp:BoundField DataField="HireDate" DataFormatString="{0:yyyy年M月d日}" HtmlEncode="false" HeaderText="HireDate" ApplyFormatInEditMode="true" />
2、 DataFormatString的格式
格式化字符串可以为任意字符串,并且通常包含字段值的占位符。
例如:DataFormatString="aaa{n:bbb}ccc" ,其中的aaa和ccc表示任意的字符串;n是从零开始的参数列表中的字段值的索引,因为每个单元格中只有一个字段值,所以n通常为0;bbb为格式字符串代表所们希望数据显示的格式。
3、 GridView数据常用格式化类型
数字 {0:N2} 12.36
数字 {0:N0} 13
数字 {0:D} 12345 12345
数字 {0:D8} 12345 00012345
数字 {0:F} 12345.6789 12345.68
数字 {0:F0} 12345.6789 12346
数字 {0:G} 12345.6789 12345.6789
数字 {0:G7} 123456789 1.234568E8
货币 {0:c2} $12.36
货币 {0:c4} $12.3656
货币 "¥{0:N2}" ¥12.36
科学计数法 {0:E3} 1.23E+001
百分数 {0:P} 12.25%
日期 {0:D} 2006年11月25日
日期 {0:d} 2006-11-25
日期 {0:f} 2006年11月25日 10:30
日期 {0:F} 2006年11月25日 10:30:00
日期 {0:s} 2006-11-26 10:30:00
时间 {0:T} 10:30:00
时间 {0:t} 10:30
HyperLinkField
特别说明HyperLinkField,是因为实现了DataGrid的HyperLinkColumnd所不支持的,多参数格式化链接。通常我们附加在url后面的QueryString不会只有一个,asp.net 1。x 中只有使用绑定列,然后手动写代码:
<asp:DataGrid id="DataGrid1" runat="server" DataSourceID="SqlDataSource1">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:HyperLink runat="server" Text="View Photo" NavigateUrl='<%# String.Format("photo.aspx?empid={0}&path={1}", Eval("EmployeeID"), Eval("PhotoPath")) %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
现在使用HyperLinkField,看下,省去很多苦力活:)
复制 保存
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" DataKeyNames="EmployeeID" DataSourceID="SqlDataSource1">
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="EmployeeID,City" DataNavigateUrlFormatString="photo.aspx?empid={0}&path={1}"
HeaderText="PhotoPath" Text="View Photo" />
</Columns>
</asp:GridView>
注意:
1、.aspx中 DataNavigateUrlFields 中多个 Field 使用 , (逗号)分隔
2、裕绑定的Url 实际值,不能为完整的绝对的路径(如:/article/4757779.html),而应该提供相对路径(如:Jinglecat/archive/2007/05/20/753284.html),否则该URL整个不会被输出,应该是HyperLinkField内部做了HTML监测,但它又不提供开关属性如BoundField 的HtmlEncode给开发人员,应该算一个bug吧!
空值(Null)处理
如果字段的值为空,则可以通过设置 NullDisplayText 属性显示自定义标题。
通过将 ConvertEmptyStringToNull 属性设置为 true,BoundField 对象,也可以将空字符串 ("") 字段值自动转换为空值。
相关文章推荐
- html、js前台数据传到后台,spring复杂类型转换
- 关于java中long类型的数据转换json传到前台时丢失精度问题的解决办法
- 后台转换JSON数据类型,前台解析JSON数据
- 自定义日期类型的数据绑定 前台 - 后台 或 后台 - 前台 互相转换
- easyui datetimebox处理【前台传递到后台是string类型,但是后台定义的是java.util.date,如何自动转换数据类型】
- 自定义日期类型的数据绑定 前台 - 后台 或 后台 - 前台 互相转换
- Ajax前台返回JSON数据后再Controller中直接转换成类型使用,后台接收json转成实体的方法
- 自定义日期类型的数据绑定 前台 - 后台 或 后台 - 前台 互相转换
- 小端模式与强制数据类型转换
- 第七章 注解式控制器的数据验证、类型转换及格式化(3)——跟着开涛学SpringMVC
- VC常用数据类型使用转换
- Python 数据类型转换
- [Z]从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界
- 常用数据类型转换CString do…
- dom4j把String类型的XML数据转换成Document
- 数据运算中数据类型的转换
- PHP数据类型转换(字符串转数字,数字转字符串)
- 常用数据类型使用转换详解
- Python 数据类型转换操作
- Python 数据类型转换操作