У меня есть GridView с несколькими полями, одно из которых потенциально может иметь безумно широкое значение, например:
аааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааа
Если в поле есть что-то вроде который, я хочу его обернуть.
Я могу легко вставить символ в код каждые 50 символов или около того ... но какой символ? Если я использую \ г \ п или космос или тому подобное, тогда иногда настройка не переносится (потому что 50 символов другой строки шире), и я получаю что-то вроде этого:
мммммммммм
ммммм
llllllllll llllllllll llll
Я не хочу, чтобы эти места появлялись; Я просто хочу, чтобы строка обернулась там, если это возможно, но в противном случае ничего не показывала:
мммммммммм
ммммм
llllllllllllllllllllllll
Кроме того, я бы предпочел оставить HtmlEncode на, если это возможно. Есть ли способ сделать это?





Здесь вы можете сделать несколько вещей.
Один из вариантов - изменить столбец, о котором идет речь, на TemplateColumn и поместить в него div с возможностью создания полос прокрутки. Я бы посоветовал В самом деле против этого.
Если вы используете CRLF (\ r \ n), вам нужно будет обернуть его в теги ПРЕД, и вы захотите изменить факт шрифта на моноширинный шрифт (например, Courier), чтобы 50 символов ВСЕГДА были такая же длина.
Если вам нужно решение HTML, то нужно вставить тег BR в текст в соответствующем месте.
Теперь вы также должны убедиться, что вы проверяете длину строки (убедившись, что она больше, чем длина вашего магического числа), и что она не содержит пробела (поскольку пробел позволяет обернуть) перед вставкой CRLF или BR.
вставьте эти строки 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+ */
Вы можете использовать следующие свойства поля шаблона в GridView
ItemStyle-Wrap = "true" ItemStyle-Width = "100"
Вы должны установить ширину, иначе текст не будет перенесен.
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] - это столбец, который нужно обернуть.
Я бы выбрал решение только для CSS, подобное этому +1. Добавление дерьма в вывод раздражает, и этого следует избегать. Я говорю: обрабатывать элементы пользовательского интерфейса в разметке.