GridView列中的多空格问题

来源:互联网 发布:初中科学培训软件 编辑:程序博客网 时间:2024/06/05 07:12
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。成功。