2009-05-26 20 views
5

He intentado cambiar la propiedad RowStyle Wrap y cada propiedad Wrap en la grilla. ¿Cómo detengo el ajuste de palabras en una vista de cuadrícula sin importar el tamaño de la longitud de texto de la fila?Gridview wordwrap

+0

¿Qué estás tratando de lograr? ¿Desea que esa columna se amplíe con la longitud del texto o desea que el texto simplemente se corte en función del ancho de la columna? – CodeLikeBeaker

+0

Sí, me gustaría que la columna se expanda. Supongo que estoy acostumbrado a escribir html en asp clásico. – Eric

Respuesta

9

No es RowStyle. Debe establecer la configuración de ajuste del elemento individual debajo de las columnas.

<asp:GridView ID="GridView1" runat="server"> 
    <Columns> 
     <asp:BoundField> 
     <ItemStyle Wrap="False" /> 
     </asp:BoundField> 
     <asp:BoundField> 
     <ItemStyle Wrap="False" /> 
     </asp:BoundField> 
    </Columns> 
</asp:GridView> 

Esto debe hacerse para cada columna individual. Sin embargo, puede configurar un método en el código subyacente para hacerlo por usted.

+1

Este método funcionó para mí en ASP.NET 4, IE 8. Creo que agregó un noWrap = "noWrap" a los elementos td. NoWrap aparentemente está en desuso, y agregar el siguiente estilo a los elementos td sería mejor: style = "white-space: nowrap". – Mike

+1

@Mike: suena sobre la velocidad de Microsoft. En un método más compatible con varios navegadores sería agregar su estilo ''. –

1

Jason escribe en this blog post:

que se enfrentan a los mismos problemas con el Gridview al cargar texto largo de la base de datos. Probé el método DIV para obtener estilo CSS para evitar que la tabla se expanda completamente hacia la derecha. Lo tengo que trabajar ahora con elipsis que muestra si el texto es demasiado largo. Sin embargo, esto significa que no puedo mostrar todo el texto en la vista de cuadrícula, lo que me puede confundir a los usuarios.

Así que agregué otro estilo llamado "word-break: break-all" para dividir el texto en trozos que encajan correctamente en la tabla y obtuve los resultados que quería. A continuación se muestra las partes a mi código:

<style type="text/css"> 
    .DisplayDesc { width:500px; word-break: break-all; } 
    .DisplayDiv { width:500px; OVERFLOW:hidden; TEXT-OVERFLOW:ellipsis;} 
</style> 

<asp:TemplateField HeaderText="Log Description"> 
    <ItemStyle Font-Names="Tahoma" Font-Size="X-Small" 
       HorizontalAlign="Left" Wrap="True" /> 
    <ItemTemplate> 
     <div class="DisplayDiv"> 
      <asp:Label CssClass="DisplayDesc" ID="Label1" runat="server" 
         Text='<%# Bind("TransText") %>'></asp:Label> 
     </div> 
    </ItemTemplate> 
</asp:TemplateField> 
0

Sólo hay que establecer nowrap en una clase CSS, y aplicar esa clase para abarcar la etiqueta, y poner su lable dentro de esa etiqueta span,

span class = "yourclassname" su asp lable tag/span

0

esto es lo que funcionó para mí

<asp:GridView ID="SomeGridView" CssClass="gridtext" > 

.gridtext 
{ 
    white-space: nowrap; 
} 

.gridtext table 
{ 
    white-space: nowrap; 
} 
.gridtext tr 
{ 
    white-space: nowrap; 
} 
.gridtext td 
{ 
    white-space: nowrap; 
} 

.gridtext th 
{ 
    white-space: nowrap; 
}