在没有可见空间的情况下包装 GridView 文本

Posted

技术标签:

【中文标题】在没有可见空间的情况下包装 GridView 文本【英文标题】:Wrapping GridView text without a visible space 【发布时间】:2010-09-25 05:27:51 【问题描述】:

我有一个包含多个字段的 GridView,其中一个可能具有疯狂的广泛价值,如下所示:

呸呸呸呸呸呸呸呸呸呸呸呸呸呸

如果那个类的东西在现场,我希望它包装。

我可以很容易地每隔 50 个字符左右在代码中插入一个字符...但是什么字符?如果我使用 \r\nspace 等,那么有时设置不会换行(因为不同行的 50 个字符更宽),我得到像这样:

mmmmmmmmmm 嗯嗯 llllllllllllllllllllllllllll

我不希望这些空间出现;如果可以的话,我只想将线换到那里,否则什么都不显示:

mmmmmmmmmm 嗯嗯 呸呸呸呸呸呸呸

另外,如果可能的话,我宁愿让 htmlEncode 开启。有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

您可以在这里做一些事情。

一个选项是将相关列更改为 TemplateColumn,并在其中放置一个 div,并能够生成滚动条。我真的建议不要这样做。

如果您使用 CRLF (\r\n),那么您需要将其包装到 PRE 标记中,并且您希望将字体事实更改为等宽字体(例如Courier),这样 50 个字符的长度总是相同的。

如果您想要一个 HTML 解决方案,那么只需将 BR 标记插入到文本的适当位置即可。

现在,您还需要确保检查字符串的长度(确保它大于您的幻数长度),并且它不包含空格(因为空格将允许用于包装),在插入 CRLF 或 BR 之前。

【讨论】:

【参考方案2】:

将这些 CSS 行粘贴到一个类中,并将该类粘贴到您的网格项目中

white-space: -moz-pre-wrap; /* Mozilla, supported since 1999 */
white-space: -pre-wrap; /* Opera 4 - 6 */ 
white-space: -o-pre-wrap; /* Opera 7 */ 
white-space: pre-wrap; /* CSS3 */ 
word-wrap: break-word; /* IE 5.5+ */

【讨论】:

我会选择像这样 +1 的纯 CSS 解决方案。在输出中添加废话很烦人,应该避免。处理标记中的 UI 内容,我说。【参考方案3】:

您可以在 GridView 中使用以下模板字段属性

ItemStyle-Wrap="true" ItemStyle-Width="100"

你必须设置宽度,否则文字不会被换行。

【讨论】:

【参考方案4】:

ItemStyle-Wrap="true" ItemStyle-Width="100" 不适用于没有空格的长单词。

找到解决方案:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
            
                if (e.Row.RowType == DataControlRowType.DataRow)
                
                    e.Row.Cells[1].Attributes.Add("style", "word-break:break-all;word-wrap:break-word");
                
            

其中 Cells[1] 是要换行的列。

【讨论】:

以上是关于在没有可见空间的情况下包装 GridView 文本的主要内容,如果未能解决你的问题,请参考以下文章

在选择情况下未触发asp gridview可见性

如何在没有 Ajax Toolkit 的情况下显示加载图像直到 gridview 完全加载?

如何让图像在没有垂直空间的情况下包装?

在没有 CoreText 的情况下将 UITextView 中的文本包装在 UIImage 周围

如何在没有自定义单元格的情况下将文本包装在 UITableViewCell 中

在编辑模式下禁用文本框