GridView控件显示空格

来源:百度文库 编辑:神马文学网 时间:2024/04/30 09:05:26

    日前,做一个应用程序。aspx页面中有一个GridView控件,其数据源是DataTable。数据的某一列(假设为Col)的中间位置有N(N >= 0)个空格,形如"A BC"、"A    BC",字符串中间空格数量不定。展示到IE浏览器中,用户使用鼠标选择该列的值,拷贝到其他文本框中做为查询条件。程序是B/S架构,其浏览器只能够是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。成功。