我有一个包含多个字段的GridView,其中一个可能具有疯狂的广泛价值,如下所示:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
如果 那种东西在现场,我希望它包装。
我可以轻松地在每50个字符左右的代码中插入一个字符......但是什么字符?如果我使用 \ r \ n 或空格等,那么有时设置不会换行(因为不同行的50个字符更宽),我得到像这样的东西:
mmmmmmmmmm
MMMMM
llllllllll llllllllll llll
我不希望这些空间出现;如果可以,我只想让线包裹在那里,否则什么都不显示:
mmmmmmmmmm
MMMMM
llllllllllllllllllllllll
另外,如果可能的话,我宁愿在上留下HtmlEncode 。有没有办法做到这一点?
答案 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"
您必须设置宽度,否则文本将不会被包装。