GridView中格式化整理
来源:互联网 发布:个人辐射剂量仪淘宝 编辑:程序博客网 时间:2024/06/09 01:12
今天又碰到有网友问GridView中的格式化问题了,还是在这里记下吧:设置DataFormatString后为什么格式化输出无效?不要忽略两个重要属性BoundField的HtmlEncode和ApplyFormatInEditMode:HtmlEncodeGridView使用的BoundField与DataGrid使用BoundColumn不同,BounField提供了一个HtmlEncode属性,提供是否对数据进行HTML编码,降低了BoundColumn潜在的Html&Script嵌入攻击,默认该值是启用的。如果要使用格式化输出,应该关闭此属性。PS:不明白,BoundField内部如何实现的,为什么不能支持先格式化后再Html编码?有时间dasm一下,看下BoundField源码。 今天又碰到有网友问GridView 中的格式化问题了,还是在这里记下吧: <asp:BoundField DataField="HireDate" DataFormatString="{0:yyyy年M月d日}" HtmlEncode="false" HeaderText="HireDate" /> <asp:BoundField DataField="HireDate" DataFormatString="{0:yyyy年M月d日}" HtmlEncode="false" HeaderText="HireDate" ApplyFormatInEditMode="true" /> <asp:HyperLinkField DataNavigateUrlFields="EmployeeID,City" DataNavigateUrlFormatString="photo.aspx?empid={0}&path={1}" HeaderText="PhotoPath" Text="View Photo" /> <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> <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>
设置 DataFormatString 后为什么格式化输出无效?
不要忽略两个重要属性 BoundField的 HtmlEncode 和 ApplyFormatInEditMode :
HtmlEncode
GridView 使用的 BoundField 与 DataGrid 使用 BoundColumn 不同,BounField 提供了一个 HtmlEncode 属性,提供是否对数据进行HTML编码,降低了 BoundColumn 潜在的Html &Script 嵌入攻击,默认该值是启用的。如果要使用格式化输出,应该关闭此属性。
PS:不明白,BoundField内部如何实现的,为什么不能支持先格式化后再Html编码?有时间dasm一下,看下BoundField源码。
ApplyFormatInEditMode
默认情况下,只有当数据绑定控件处于只读模式时,格式化字符串才能应用到字段值。当数据绑定控件处于编辑模式时,若要将格式化字符串应用到显示的值,应该同时将 ApplyFormatInEditMode 属性设置为 true。
格式化字符串的格式
格式化字符串可以为任意字符串,并且通常包含字段值的占位符。例如,在格式化字符串“Item Value: {0}”中,当 BoundField 对象中显示字符串时,字段的值会代替 {0} 占位符。格式化字符串的剩余部分显示为文本。 {0}为绑定字段的下标,如下{0}为EmployeeID,{1}为City;
占位符由用冒号分隔的两部分组成并用大括号括起,格式为 {A : Bxx}。冒号前的值(常规示例中为 A)指定在从零开始的参数列表中的字段值的索引。
注意:此参数是格式化语法的一部分。因为每个单元格中只有一个字段值,所以这个值只能设置为 0。即始终为{0:Bxx}
该冒号以及冒号后面的值是可选的。冒号后的字符(常规示例中为 B)指定值的显示格式。下表列出了一些常用格式。
格式字符后的值(常规示例中为 xx)指定显示的值的有效位数或小数位数。例如,格式化字符串“{0:F2}”将显示带两位小数的定点数。
更多的格式化信息:格式化概述 http://msdn2.microsoft.com/zh-cn/library/26etazsy(VS.80).aspx
以下连接提供了不同的格式化类型:
数字格式字符串
http://msdn2.microsoft.com/zh-cn/library/427bttx3(VS.80).aspx
日期与时间格式字符串
http://msdn2.microsoft.com/zh-cn/library/97x6twsz(VS.80).aspx
枚举格式字符串
http://msdn2.microsoft.com/zh-cn/library/c3s1ez6e(VS.80).aspx
自定义格式字符串
http://msdn2.microsoft.com/zh-cn/library/0asazeez(VS.80).aspx
复合格式化
http://msdn2.microsoft.com/zh-cn/library/txafckwd(VS.80).aspx
HyperLinkField
特别说明HyperLinkField,是因为实现了DataGrid的HyperLinkColumnd所不支持的,多参数格式化链接。通常我们附加在url后面的QueryString不会只有一个,asp.net 1。x 中只有使用绑定列,然后手动写代码:
现在使用HyperLinkField,看下,省去很多苦力活:)
注意:
1。.aspx中 DataNavigateUrlFields 中多个 Field 使用 , (逗号)分隔
2。裕绑定的Url 实际值,不能为完整的绝对的路径(如:http://www.cnblogs.com/Jinglecat/archive/2007/05/20/753284.html),而应该提供相对路径(如:Jinglecat/archive/2007/05/20/753284.html),否则该URL整个不会被输出,应该是HyperLinkField内部做了HTML监测,但它又不提供开关属性如BoundField 的HtmlEncode给开发人员,应该算一个bug吧!
空值(Null)处理
如果字段的值为空,则可以通过设置 NullDisplayText 属性显示自定义标题。
通过将 ConvertEmptyStringToNull 属性设置为 true,BoundField 对象,也可以将空字符串 ("") 字段值自动转换为空值。
注:所有资源均整理自MSDN,呵呵,看来有问题的朋友们还是没学会如何用好MSND哦
资源
详细信息:http://msdn2.microsoft.com/zh-cn/library/system.web.ui.webcontrols.boundfield(VS.80).aspx 备注节
还可以参看:大牛 Dino Esposito 的文章:ASP.NET 2.0:弃用 DataGrid 吧,有新的网格控件了!
http://www.microsoft.com/china/msdn/library/webservices/asp.net/0408gridview.mspx?mfr=true
- GridView 中格式化整理
- GridView中格式化整理
- GridView中数据格式化
- Aspnet中GridView数据格式化
- GridView Eval() 中数据格式化或格式化数据
- 在GridView中如何格式化Money型字段(downmoon)?
- 在GridView中如何格式化Money型字段?
- asp.net中GridView日期时间列格式化
- 在GridView中如何格式化Money型字段(downmoon)?
- GridView中Dataformatstring 格式化日期应注意的问题
- 在GridView中如何格式化Money型字段
- GridView中对日期时间字段进行格式化
- GridView中Dataformatstring 格式化日期应注意的问题
- ASP:Gridview中绑定列的常见格式化字符串
- GridView的格式化问题
- 用DataFormatString格式化GridView
- GridView中的时间格式化
- GridView格式化短日期
- 日本召集1万名预备自卫官投入震区援助
- 外国救援人员迫降福岛遭低级别辐射
- Zen Coding – WEB前端开发利器
- 又两个很常用的sqlServer字段相关的sql语句--downmoon 收藏
- table动态切换
- GridView中格式化整理
- php开发OO细节,怕忘了
- 30年后,你拿什么养活自己2
- [C] 整人的NCRE3题目, 关于string的操作.
- FFMEPG安装
- Oracle用户表的管理
- 解决itext-rtf.jar 对html转换后生成rtf文档 其中表格行列合并的问题
- pda开发环境准备 和 vs2005 打包winform程序
- 第九节--控件(二)ListView