GridView列中的多空格问题

GridView列中的多空格问题
作者:不详    来源:互联网
  日前,做一个应用程序.aspx页面中有一个GridView控件,其数据源是DataTable。数据的某一列(假设为Col)的中间位置有N(N >= 0) 个空格,形如"A BC"、"A BC",字符串中间 空格数量不定。展示到IE浏览器中,用户使用鼠标选择该列的值,拷贝到其他文本框中做为查询条件。

  IE浏览器会非常智能化的将"A BC"、"A BC",统统显示为"A BC",即使A和B之间的 空格多个,也只是被浓缩为一个。问题出现了,因为用户需要选择渲染后的值作为搜索条件进行查找,显然,"A BC"并不等于"A BC"。

  上网找了很多资料,绝大部分都是说,如果DataFormatString不生效,将HtmlEncode属性设置为false。只好自己动手了。

  首先想到的是, HTML中, 空格是使用" "表示,那么将Col列中的 空格替换为" "是不是就解决问题了呢?结果,不正确。替换

  后,在Col中显示的是"A  BC"。为什么这样子呢?应该是Asp.Net在渲染、拼装GridView的 HTML代码时,将"A  BC"做为一个字符串处理,而不是对" "进行了转义解释。查看了MSDN后,查看到BoundField类的HtmlEncode属性,在MSDN中这样介绍,HtmlEncode,获取或设置一个值,该值指示在 BoundField 对象中显示字段值之前,是否对这些字段值进行 HTML 编码。

  再结合遇到的情况,可以发现,之所以" "没有被渲染,其实就是因为在渲染时,已经将" "看作了字符串。

  设置Col对应BoundField的HtmlEncode属性为false,再次运行程序,ok。成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值