Foros del Web » Programando para Internet » ASPX (.net) »

Problema ancho GridView

Estas en el tema de Problema ancho GridView en el foro de ASPX (.net) en Foros del Web. Hola a todos, les escribo porque tengo el siguiente problema: Estoy haciendo una página en C# con Visual Studio 2008. Creo una tabla que me ...
  #1 (permalink)  
Antiguo 26/10/2010, 02:12
 
Fecha de Ingreso: julio-2010
Mensajes: 298
Antigüedad: 11 años, 10 meses
Puntos: 8
Problema ancho GridView

Hola a todos, les escribo porque tengo el siguiente problema:
Estoy haciendo una página en C# con Visual Studio 2008.
Creo una tabla que me va a mostrar el Nombre, Apellidos y Email provinientes de una tabla de mi BBDD, hasta aquí todo correcto, ya que recibo y me muestra los datos.
El problema surge cuando quiero restringir el ancho de la tabla a "80px" por ejemplo, ya que a los lados tengo menús, ... y si los datos son muy largos me sobrepone la tabla a los menús.
Les dejo el código que me genera la tabla:

Código:
<asp:GridView ID="grid" runat="server" AutoGenerateColumns="false">
        <Columns>
            <asp:BoundField DataField="Name" SortExpression="Name" ItemStyle-Width="10px" ItemStyle-Wrap="false" />
            <asp:BoundField DataField="Surname" SortExpression="Surname" ItemStyle-Width="10px" ItemStyle-Wrap="false" />
            <asp:BoundField DataField="Email" SortExpression="Email" ItemStyle-Width="50px" ItemStyle-Wrap="false" />
        </Columns>
</asp:GridView>
Como ven he forzado el ancho de las celdas y le he indicado que me corte las palabras como quiera, para intentar que haga multiline, pero no hay forma, ya que me dimensiona el ancho de la celda al nombre más largo que lo contenga.

Alguna idea para forzar el ancho? no me importa si sale en 2 lineas el texto.

Muchas gracias,
Pimager
  #2 (permalink)  
Antiguo 26/10/2010, 08:34
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 13 años, 1 mes
Puntos: 30
Respuesta: Problema ancho GridView

Has provado usando templatefield en lugar de BoundField?
__________________
http://geekswithblogs.net/jaullo/Default.aspx
Si te he ayudado regalame Karma positivo!!!
  #3 (permalink)  
Antiguo 27/10/2010, 09:20
 
Fecha de Ingreso: octubre-2010
Mensajes: 18
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Problema ancho GridView

eso de usar templatefield es una solucion, la otra es asignarle un tamaño de anchura al grid

<asp:GridView ID="grid" runat="server" AutoGenerateColumns="false" Width="100px">
  #4 (permalink)  
Antiguo 28/10/2010, 00:50
 
Fecha de Ingreso: julio-2010
Mensajes: 298
Antigüedad: 11 años, 10 meses
Puntos: 8
Respuesta: Problema ancho GridView

Hola de nuevo, gracias por sus respuestas.

JosueMariaca el establecer en el grid el ancho totalno me funciona, ya que al no cortar las palabras redimensiona automáticamente el tamaño de cada columna al tamaño de la palabra más larga.

Jaullo he intentado con un TemplateField tal como este:
Código:
<asp:TemplateField ItemStyle-CssClass="centered" SortExpression="Email"/>
                <ItemTemplate>
                    <asp:Label ID="Email"></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
y me da el siguiente error:
System.Web.UI.WebControls.DataControlFieldCollecti on debe tener elementos de tipo 'System.Web.UI.WebControls.DataControlField'. 'ItemTemplate' es de tipo 'System.Web.UI.HtmlControls.HtmlGenericControl'.

Alguna otra idea? se me estan terminando los recursos ...

Muchas gracias por su tiempo
Pimager
  #5 (permalink)  
Antiguo 28/10/2010, 08:22
 
Fecha de Ingreso: octubre-2010
Mensajes: 18
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Problema ancho GridView

Pues si que esta un poco raro el asunto ... el template que usas luce bien aunque le falta que le asignes el dato que debe de mostrar y el runat="server" ... te dejo un ejemplo de template como yo lo uso a ver si te funciona ... por otro lado estaria bien si pusieras el codigo completo de tu grid para ver si encontramos algo.

<Columns>

<asp:TemplateField HeaderText="Nombre Header" Visible="True">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("NombreColumna") %>'></asp:Label>
</ItemTemplate>
<HeaderStyle CssClass="alert" />
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Wrap="True" />
</asp:TemplateField>

</Columns>

================================================== ===============
Espero te sirva . Saludos !!
  #6 (permalink)  
Antiguo 29/10/2010, 03:46
 
Fecha de Ingreso: julio-2010
Mensajes: 298
Antigüedad: 11 años, 10 meses
Puntos: 8
Respuesta: Problema ancho GridView

Hola JosueMariaca, la verdad que ha mejorado, ya que puedo redimensionar un poco las columnas, pero aun no me las corta bien y se sigue sobreponiendo.
Te pongo a continuación el código completo de mi gridView:

Código:
<asp:GridView ID="grid" runat="server" AutoGenerateColumns="false">        
	<Columns>
		<asp:TemplateField Visible="true">
			<ItemTemplate>
				<asp:Label ID="Name" runat="server" Text='<%# Eval("Name") %>' />    
			</ItemTemplate>
			<ItemStyle HorizontalAlign="Center" Width="20px" VerticalAlign="Middle" Wrap="True" />
		</asp:TemplateField>
		
		<asp:TemplateField Visible="true">
			<ItemTemplate>
				<asp:Label ID="surname" runat="server" Text='<%# Eval("surname") %>' />    
			</ItemTemplate>
			<ItemStyle HorizontalAlign="Left" Width="20px" VerticalAlign="Middle" Wrap="True" />
		</asp:TemplateField>
		
		<asp:TemplateField Visible="true">
			<ItemTemplate>
				<asp:Label ID="email" runat="server" Text='<%# Eval("email") %>' />    
			</ItemTemplate>
			<ItemStyle HorizontalAlign="Center" Width="20px" VerticalAlign="Middle" Wrap="True" />
		</asp:TemplateField>
								   
	</Columns>

	<PagerTemplate>
		<div class="pager">
			<div class="size">
				<asp:DropDownList ID="dropPage" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ChangePageSize" />
			</div>
			<div class="pages">
				<asp:ImageButton ID="btnFirst" runat="server" SkinID="FirstPageButton" CommandArgument="First" CommandName="Page" OnCommand="Paginate" />
				<asp:ImageButton ID="btnPrevious" runat="server" SkinID="PrevPageButton" CommandArgument="Prev" CommandName="Page" OnCommand="Paginate"/>
				<asp:Label ID="lblPageCount" runat="server" CssClass="label" />
				<asp:ImageButton ID="btnNext" runat="server" SkinID="NextPageButton" CommandArgument="Next" CommandName="Page" OnCommand="Paginate"/> 
				<asp:ImageButton ID="btnLast" runat="server" SkinID="LastPageButton" CommandArgument="Last" CommandName="Page" OnCommand="Paginate"/>                
			</div>
		</div>
	</PagerTemplate>
	  
</asp:GridView>
Las direcciones de email no me las divide en 2 lineas y los nombres sólo los divide si hay un espacio, es decir, si el nombre es "Jose Angel" me los divide en 2 lineas, pero si el nombre es "JoseAngel", entonces no los divide.
Espero que te pueda ayudar y me puedas ayudar a mi.

Muchas gracias por tu tiempo.
Pimager
  #7 (permalink)  
Antiguo 01/11/2010, 09:22
 
Fecha de Ingreso: octubre-2010
Mensajes: 18
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Problema ancho GridView

Hola Pimager ... pues mira te comento ...
No habia tenido la necesidad de trabaja con un grid tan pequeño, realice algunas pruebas y parece ser (desafortunadamente para tu caso) que por propia naturaleza de la plataforma, el grid trabaja asi, solo divide las palabas si tienen espacios como lo mencionas. Entonces con eso se me ocurren dos posible soluciones.

1. Viendo las columnas que tienes (Nombre, usuario y mail) lo que podrias hacer es que a cada columna (o al menos a la de nombre y mail ) les metieras una funcion que te parta el texto. El nombre lo podrias partir por los espacios y el mail por la arroba, esto lo podrias hacer con la funcion de split. Si tienes dudas de como hacer esto me dices y te pego un ejemplo de codigo.

2. Que tu grid solo tenga una columna, llamada por ejemplo "Datos" donde metas los tres campos que quieres mostrar. Por ejemplo, tu grid quedaria asi.

================================================== ===
<asp:GridView ID="grid" runat="server" AutoGenerateColumns="false" Width="80px">
<Columns>
<asp:TemplateField Visible="true">
<ItemTemplate>
<asp:Label ID="Name" runat="server" Text='<%# Eval("Name") %>' /> <br/>
<asp:Label ID="User" runat="server" Text='<%# Eval("User") %>' /> <br/>
<asp:Label ID="Mail" runat="server" Text='<%# Eval("Mail") %>' /> <br/>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Wrap="True" />
</asp:TemplateField>

</Columns>
</asp:GridView>
================================================== ===
Con esto de debera estar quedando un grid asi:

Datos
Nombre ApellidoP ApellidoM
UserName
[email protected]
------------------------------------
Nombre ApellidoP ApellidoM
UserName
[email protected]
------------------------------------
Nombre ApellidoP ApellidoM
UserName
[email protected]


================================================== ====
Eso es lo que hasta el momento se me ocurre, y tambien podrias mezclar el uso de las dos opciones que te propongo.
Espero te ayuden estas ideas y cualquier otra cosa que necesites no dudes en decirme. Saludos !!!
  #8 (permalink)  
Antiguo 01/11/2010, 10:52
 
Fecha de Ingreso: junio-2010
Ubicación: .. somewhere
Mensajes: 30
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Problema ancho GridView

¿No has considerado utilizar el control DataList?
  #9 (permalink)  
Antiguo 02/11/2010, 03:29
 
Fecha de Ingreso: julio-2010
Mensajes: 298
Antigüedad: 11 años, 10 meses
Puntos: 8
Respuesta: Problema ancho GridView

Muchas gracias JosueMariaca, me ha ido perfecto. Al final me he decantado por la opción de poner todos en una misma columna.

Muchas gracias por vuestro tiempo
Pimager

Etiquetas: .net, csharp, gridview, width
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:40.