GridView中数据格式化

 

1、   为什么设置了DataFormatString没有效果?

不要忽略BoundField的两个重要属性HtmlEncodeApplyFormatInEditMode

HtmlEncode

GridView 使用的 BoundField  DataGrid 使用 BoundColumn 不同,BounField 提供了一个 HtmlEncode 属性,提供是否对数据进行HTML编码,降低了 BoundColumn 潜在的Html &Script 嵌入攻击,默认该值是启用的。如果要使用格式化输出,应该关闭此属性。

<asp:BoundField DataField="HireDate" DataFormatString="{0:yyyyMd}" HtmlEncode="false" HeaderText="HireDate" />

ApplyFormatInEditMode

默认情况下,只有当数据绑定控件处于只读模式时,格式化字符串才能应用到字段值。当数据绑定控件处于编辑模式时,若要将格式化字符串应用到显示的值,应该同时将 ApplyFormatInEditMode 属性设置为 true

<asp:BoundField DataField="HireDate" DataFormatString="{0:yyyyMd}" HtmlEncode="false" HeaderText="HireDate" ApplyFormatInEditMode="true" />

 

2、   DataFormatString的格式

格式化字符串可以为任意字符串,并且通常包含字段值的占位符。

例如:DataFormatString="aaa{n:bbb}ccc" ,其中的aaaccc表示任意的字符串;n是从零开始的参数列表中的字段值的索引,因为每个单元格中只有一个字段值,所以n通常为0bbb为格式字符串代表所们希望数据显示的格式。

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} 20061125 

日期 {0:d} 2006-11-25 

日期 {0:f} 20061125 10:30 

日期 {0:F} 20061125 10:30:00 

日期 {0:s} 2006-11-26 10:30:00 

时间 {0:T} 10:30:00

时间 {0:t} 10:30

HyperLinkField

特别说明HyperLinkField,是因为实现了DataGridHyperLinkColumnd所不支持的,多参数格式化链接。通常我们附加在url后面的QueryString不会只有一个,asp.net 1中只有使用绑定列,然后手动写代码:

<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 实际值,不能为完整的绝对的路径(如: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 属性设置为 trueBoundField 对象,也可以将空字符串 ("") 字段值自动转换为空值。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值