最近在做项目的时候遇到了这样一个问题:我用GridView显示课程表,每个单元格的内容都包含了课程名称、上课地点、老师姓名,然后我希望它们单独显示。效果如下:。
但是,GridView太顽强了。无论我在拼接字符串时使用“rn”还是“br/”,结果都是无用的,不会单独显示在一行中。经过将近半天的询问,问题终于解决了。跟大家分享一下。GridView中的换行可以分为两类:自动换行和正常换行。先说第一类:自动换行默认情况下GridView是自动换行的,这意味着当显示的字符串很长时,GridView会自动换行。比如我们要展示:“字符串长了会自动换行”,效果如下:。
当然,如果我们不想让它自动换行,可以在页面后台添加如下代码:复制代码如下://normal wrap GridView 1 . attributes . add(' style ',' word-break : keep-all;word-wrap : normal ');添加后的渲染如下:。
先说第二类:正常包装。正常换行符的关键是换行符的选择。有些人说转义字符' rn ',有些人说' br/'。那么我应该用哪一个呢?先来看看这两种显示效果:1。显示字符串:“当字符串“”相对较长时,它将自动换行。”显示效果如下(同无):。
2.显示字符串:“当字符串很长时”,“br/”它将在此换行。”显示渲染如下:。
从上面可以看出,仅仅增加一个换行符并不能解决问题。正确的解决方法如下:1。您应该使用“br/”2。如果将字段绑定为设置模板列,则设置相应的边界字段设置参数HtmlEncode='false '。如果字段是自动生成的,请按如下方式添加GridView1_RowDataBound事件副本代码:////Summary////这样GridView中的内容就可以换行了////Summary///param name=' sender '/param///param name=' e '/param protected void GridView 1 _ row databound 1(对象发送方,GridViewRowEventArgs e){ If(e . row . row type==datacontrolrow type。DataRow){ TableCellCollection cells=e . row . cells;foreach(单元格中的TableCell单元格){ cell。文本=服务器。HtmlDecode(单元格。文本);//注意:这里所有列的所有html代码都会按照html格式输出。如果只需要转换哪一列的数据,这里只需要稍加修改。}}}看添加后的显示效果:显示字符串:‘当字符串' ' br/' '较长时,' ' br/' '会在此换行’显示效果:。
到目前为止,这个问题已经完美解决了。