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

时间:2008-12-03 21:45:41

标签: asp.net html gridview

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

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

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

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

mmmmmmmmmm
MMMMM
llllllllll llllllllll llll

我不希望这些空间出现;如果可以,我只想让线包裹在那里,否则什么都不显示:

mmmmmmmmmm
MMMMM
llllllllllllllllllllllll

另外,如果可能的话,我宁愿在上留下HtmlEncode 。有没有办法做到这一点?

4 个答案:

答案 0 :(得分:5)

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]是您要包装的列。

答案 1 :(得分:4)

将这些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+ */

答案 2 :(得分:0)

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

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

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

如果您需要HTML解决方案,则需要在适当的位置将 BR 标记插入到文本中。

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

答案 3 :(得分:0)

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

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

您必须设置宽度,否则文本将不会被包装。