2008-12-03 12 views
5

tengo un GridView con varios campos, uno de los cuales puede tener potencialmente un valor de ancho loco en esta manera:ajuste de texto GridView sin un espacio visible

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Si que tipo de cosas es en el campo, quiero que se envuelva.

Puedo insertar fácilmente un carácter en el código cada 50 caracteres más o menos ... pero ¿qué personaje? Si uso \ r \ n o un espacioo similar, entonces a veces el ajuste no se ajusta (porque 50 caracteres de una fila diferente es más ancha), y me sale algo como esto:

mmmmmmmmmm
mmmmm
llllllllll llllllllll llll

no quiero esos espacios a aparecer; Sólo quiero la línea para envolver allí si se puede, pero por lo demás no mostrar nada:

mmmmmmmmmm
mmmmm
llllllllllllllllllllllll

Además, prefiero dejar HtmlEncode sobre si es posible. ¿Hay alguna forma de hacer esto?

Respuesta

0

Puede hacer algunas cosas aquí.

Una opción es cambiar la columna en cuestión a TemplateColumn, y colocar un div en él, con la capacidad de generar barras de desplazamiento. Me gustaría realmente sugieren en contra de esto.

Si usa un CRLF (\ r \ n), debe envolverlo en PRE etiquetas, y desea cambiar el hecho de fuente a una fuente monoespaciada (como Courier) para que 50 caracteres SIEMPRE tendrían la misma longitud.

Si desea una solución HTML, entonces es una cuestión de insertar una etiqueta BR en el texto en el lugar apropiado.

Ahora, también debería asegurarse de comprobar la longitud de la cuerda (asegurándose de que sea mayor que la longitud de su número mágico), y que no contenga un espacio (como espacio permitir el envoltorio), antes de insertar el CRLF o el BR.

4

pegan estas líneas de CSS en una clase, y se adhieren esa clase en los elementos de la cuadrícula

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+ */ 
+0

Me gustaría ir con una solución CSS única como esta +1. Agregar basura a la salida es molesto y debe evitarse. Maneje las cosas de UI en el marcado, digo. –

0

Puede utilizar las siguientes propiedades del campo de plantilla en GridView

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

Hay que establecer el ancho, de lo contrario, el texto no se ajustará.

5

ItemStyle-Wrap = "true" ItemStyle-Width = "100" no funciona para una palabra larga sin espacio.

encontrado la solución:

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"); 
       } 
      } 

donde las células [1] es la columna que desea para envolver.