Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Ancho en columna - gridview

3,106 views
Skip to first unread message

Sofia

unread,
May 8, 2007, 7:19:35 AM5/8/07
to
Hola,

Me estoy volviendo medio loca con lo que debería ser un chorrada... el ancho
de las columnas en el gridview!

Le pongo el width del gridview a 175px, el ancho de la 1ª columna a 125px y
el de la 2ª a 50px. Por mucho que en tiempo de diseño se vea perfectamente,
en cuanto cargo el proyecto le pone el ancho que le da la gana.

He asignado el ancho en todos los estilos de la columna y también después de
cargar el grid view le pongo el siguiente código:
gvBuscador.Columns[1].ItemStyle.Width = Unit.Parse("75px");
gvBuscador.Columns[2].ItemStyle.Width = Unit.Parse("30px");
gvBuscador.Columns[1].ItemStyle.Wrap = false;
gvBuscador.Columns[2].ItemStyle.Wrap = false;

¡No hay manera de que me haga caso! ¿alguna idea?

Muchas gracias.


Paúl Calderón

unread,
May 8, 2007, 12:06:33 PM5/8/07
to
Porque no intentas hacer eso en el evento RowCreated del GridView.

Lo que puede estar pasando es que tu le fijas los parametros antes de hacer
el databind del grid view, con esto, probablemente, si un campo del registro
que se envia a hacer el render tiene mas caracteres en su ancho, se acoplara
automaticamente

Intentalo en el evento que te digo, y cuentanos como te fue

SALUDOS


--
Paúl Calderón P.
MCP, ASP.Net
Cuenca, Ecuadora

"Sofia" <sofia...@camaranavarra.com> wrote in message
news:#QrXmLWk...@TK2MSFTNGP04.phx.gbl...

Sofia

unread,
May 9, 2007, 3:08:40 AM5/9/07
to
Hola Paúl,

Ya he puesto en el evento que me dices ese código pero no hay manera, sigue
poniendo el ancho que le da la gana. El código que he puesto es:
protected void gvBuscador_RowCreated(object sender, GridViewRowEventArgs e)
{
gvBuscador.Columns[1].ItemStyle.Width = Unit.Parse("125px");
gvBuscador.Columns[2].ItemStyle.Width = Unit.Parse("50px");
}

¿Estaré poniendo algo mal?

Muchas gracias.

"Paúl Calderón" <pcal...@neural.com.ec> escribió en el mensaje
news:%23Hx4arY...@TK2MSFTNGP02.phx.gbl...

Jose A. Fernandez

unread,
May 9, 2007, 7:36:45 AM5/9/07
to
Hola Sofia
Dependiendo de que tipo de contenido tenga tu columna tendras que
realizarlo al ancho por
.ItemStyle.Width ...como lo estas haciendo o por,
.ControlStyle.Width
Por ejemplo lo que a veces se escribe (vaa lo parsea el asp.net)
dentro de la columna es un contrl label, un hyperlink, etc entnoces
deberias realizarlo asi
GridView1.Columns.Item(0).ControlStyle.Width = 300

NOTA: Siempre es conveniente que postees con algun codigo de ejemplo
para ayudarte mejor. En este caso por ejemplo con un parte del codigo
del gridview.

Espero que te sirva de ayuda o guia
____________________
Jose A. Fernandez


On 9 mayo, 04:08, "Sofia" <sofia_s...@camaranavarra.com> wrote:
> Hola Paúl,
>
> Ya he puesto en el evento que me dices ese código pero no hay manera, sigue
> poniendo el ancho que le da la gana. El código que he puesto es:
> protected void gvBuscador_RowCreated(object sender, GridViewRowEventArgs e)
> {
> gvBuscador.Columns[1].ItemStyle.Width = Unit.Parse("125px");
> gvBuscador.Columns[2].ItemStyle.Width = Unit.Parse("50px");
>
> }
>
> ¿Estaré poniendo algo mal?
>
> Muchas gracias.
>

> "Paúl Calderón" <pcalde...@neural.com.ec> escribió en el mensajenews:%23Hx4arY...@TK2MSFTNGP02.phx.gbl...


>
> > Porque no intentas hacer eso en el evento RowCreated del GridView.
>
> > Lo que puede estar pasando es que tu le fijas los parametros antes de
> > hacer el databind del grid view, con esto, probablemente, si un campo del
> > registro que se envia a hacer el render tiene mas caracteres en su ancho,
> > se acoplara automaticamente
>
> > Intentalo en el evento que te digo, y cuentanos como te fue
>
> > SALUDOS
>
> > --
> > Paúl Calderón P.
> > MCP, ASP.Net
> > Cuenca, Ecuadora
>

> > "Sofia" <sofia_s...@camaranavarra.com> wrote in message

Sofia

unread,
May 9, 2007, 10:32:22 AM5/9/07
to
Hola Jose, Cuando pongo el nombre del grid.columns, item no me aparece.
Adjunto el código del grid por si puede dar alguna pista (he cambiado tantas
propiedades para probar lo de las columnas que hay mucho código, ya lo
siento):

<asp:GridView style="Z-INDEX: 110; LEFT: 2px; POSITION: absolute; TOP:
152px" id="gvBuscador" runat="server" Width="175px" CssClass="SuperP"
Height="188px" AutoGenerateColumns="False" AllowPaging="True"
AllowSorting="True" OnPageIndexChanging="gvBuscador_PageIndexChanging"
OnSorting="gvBuscador_Sorting" OnRowCreated="gvBuscador_RowCreated">

<FooterStyle Width="175px"></FooterStyle>

<EmptyDataRowStyle Width="175px"></EmptyDataRowStyle>

<Columns>

<asp:BoundField ReadOnly="True" DataField="nif" Visible="False"
HeaderText="Nif">

<ItemStyle Wrap="False"></ItemStyle>

<HeaderStyle Wrap="False" HorizontalAlign="Left"
VerticalAlign="Top"></HeaderStyle>

</asp:BoundField>

<asp:HyperLinkField HeaderText="Nombre" NavigateUrl="~/principal.aspx"
SortExpression="nombre" DataTextField="nombre"
DataNavigateUrlFormatString="principal.aspx?nif={0}&amp;emp_per={1}&amp;planta={2}"
DataNavigateUrlFields="nif,empper,Cod_Planta">

<ControlStyle Width="125px"></ControlStyle>

<ItemStyle Width="125px" CssClass="SuperP" Wrap="False"
HorizontalAlign="Left" VerticalAlign="Top"></ItemStyle>

<HeaderStyle Width="125px" Height="20px" CssClass="SuperP"
HorizontalAlign="Left" VerticalAlign="Top"></HeaderStyle>

</asp:HyperLinkField>

<asp:BoundField DataField="nom_concejo" SortExpression="nom_concejo"
HeaderText="Localidad">

<ControlStyle Width="30px"></ControlStyle>

<ItemStyle Width="30px" CssClass="SuperP" Wrap="False"
HorizontalAlign="Left" VerticalAlign="Top"></ItemStyle>

<HeaderStyle Width="30px" Height="20px" CssClass="SuperP" Wrap="False"
HorizontalAlign="Left" VerticalAlign="Top"></HeaderStyle>

<FooterStyle Width="30px"></FooterStyle>

</asp:BoundField>

<asp:BoundField DataField="empper" Visible="False"
HeaderText="E/P"></asp:BoundField>

<asp:BoundField DataField="Cod_Planta" Visible="False"
HeaderText="Cod_Planta"></asp:BoundField>

</Columns>

<RowStyle Width="175px"></RowStyle>

<EditRowStyle Width="175px"></EditRowStyle>

<SelectedRowStyle Width="175px"></SelectedRowStyle>

<PagerStyle Width="175px"></PagerStyle>

<HeaderStyle Width="175px"></HeaderStyle>

<AlternatingRowStyle Width="175px"></AlternatingRowStyle>

</asp:GridView>


La carga del grid la hago con un dataset:
gvBuscador.DataSource = objDataSet.Tables["tabla"];
gvBuscador.DataBind();.

Espero que esto aclare un poco mas...

Muchas gracias.

"Jose A. Fernandez" <ferna...@gmail.com> escribió en el mensaje
news:1178710605....@e65g2000hsc.googlegroups.com...

Jose A. Fernandez

unread,
May 9, 2007, 1:38:41 PM5/9/07
to
Hola Sofia
Primero que nada el error que no te aparece es porque tu grid se llama
gvBuscador
gvBuscador.Columns.Item(0)...
Bueno estaba mirando el codigo del grid, y veo que tiene unas
propiedades de tamaño
.... id="gvBuscador" Width="175px" CssClass="SuperP" Height="188px"
y ademas tiene un estilo asignado:
.... CssClass="SuperP"
¿Esta clase que realiza solo cambios de colores o trambien
estructurales?
Porque alli puedes colocar todo esto

Width="175px" CssClass="SuperP" Height="188px"
y tambien esto

style="Z-INDEX: 110; LEFT: 2px; POSITION: absolute; TOP:152px"

Porque sino tienes 3 lugares donde estas asignando estilos en el
CSSCLASS, mediante PROPIEDADES (Width, Height) y mediante STYLE, y te
puede causar "dolores de cabeza" o sea mi recomendacion es ue
estructures bien esta parte de tus proyectos web y que tengas solo UN
LUGAR donde esta el estilo (o en hojas de estilo externas que es lo
mejor, o directamente en el control)

BUEno despues de esta introduccion ;)
SI eliminas todo eso de las propiedades delgrid quedaran los estilos
propios que estas colocando directamente en la definicion de las
columnas del gridview, por ejemplo la segunda columna HyperLinkField >
Nombre que tiene este estilo
<ControlStyle Width="125px"></ControlStyle>
Te lo debe tomar correctamente

y si puedes eliminar todo el resto de estilos porque lo tienes
repetidos por todos lados ;)
por eso no podias ver correctamente porque en algun cambio alguin
estilo "pisaba" (sobreescribia a otro)

PD: mi recomendacion es colocar un clase css a cada columna para poder
modificar si necesidad de tocar el codigo, pero por ahora dejalo asi
ellimina todos los estilos de la cabecera del grid y slo asignalo por
columna porque parece que quieres unas columasn bien personalizadas

Cuentanos como te fue...
Saludos
_________________________
Jose A. Fernandez

> "Jose A. Fernandez" <fernande...@gmail.com> escribió en el mensajenews:1178710605....@e65g2000hsc.googlegroups.com...

Sofia

unread,
May 10, 2007, 3:07:56 AM5/10/07
to
Buenas,

Efectivemente me había formado un lío probando todas las propiedades
posibles del ancho.......

Pero aún así he puesto solamente las propiedades del ancho única y
exclusivamente en las columnas (o eso creo :·) y sigue igual.

El código html que tengo para crear el grid es el siguiente:
<asp:GridView style="Z-INDEX: 110; LEFT: 3px; POSITION: absolute; TOP:
152px" id="gvBuscador" runat="server" AllowPaging="True"
OnPageIndexChanging="gvBuscador_PageIndexChanging"
AutoGenerateColumns="False" __designer:wfdid="w18"
OnRowCreated="gvBuscador_RowCreated" OnSorting="gvBuscador_Sorting"
AllowSorting="True">

<Columns>

<asp:BoundField ReadOnly="True" DataField="nif" Visible="False"
HeaderText="Nif">

</asp:BoundField>

<asp:HyperLinkField HeaderText="Nombre" NavigateUrl="~/principal.aspx"
SortExpression="nombre" DataTextField="nombre"
DataNavigateUrlFormatString="principal.aspx?nif={0}&amp;emp_per={1}&amp;planta={2}"
DataNavigateUrlFields="nif,empper,Cod_Planta">

<ControlStyle Width="110px"></ControlStyle>

</asp:HyperLinkField>

<asp:BoundField DataField="nom_concejo" SortExpression="nom_concejo"
HeaderText="Localidad">

<ControlStyle Width="40px"></ControlStyle>

</asp:BoundField>

<asp:BoundField DataField="empper" Visible="False"
HeaderText="E/P"></asp:BoundField>

<asp:BoundField DataField="Cod_Planta" Visible="False"
HeaderText="Cod_Planta"></asp:BoundField>

</Columns>

</asp:GridView>

Y en el rowcreated tengo:
gvBuscador.Columns[1].ItemStyle.Width = Unit.Parse("110px");
gvBuscador.Columns[2].ItemStyle.Width = Unit.Parse("40px");
(Aquí aunque pongo gvBuscador.Columns no me aparece el Item)

Ya siento ser tan sumamente pesada, pero es que depués de tenerlo asi
configurado, cuando cargo el grid sigue poniéndome el ancho que le da la
gana (Si tengo un texto muy largo en la columna, ¿no se puede hacer que se
corte el texto en ved de alargarme el ancho?)

Gracias de nuevo.

"Jose A. Fernandez" <ferna...@gmail.com> escribió en el mensaje

news:1178732321.3...@n59g2000hsh.googlegroups.com...

Paúl Calderón

unread,
May 10, 2007, 11:27:50 AM5/10/07
to
Bueno, realmente habia pensado en este problema inicialmente,

Si tu por ejemplo tienes un texto del tipo

Loremipsumdolorsitametconsectetueradipiscingelit, es decir un texto largo
como tu dices, definitivamente esa celda va a tener que acoplarse a la
fuerza al tamaño de este texto sin poderlo controlar automaticamente.

Sin embargo, si definitivamente tienes la necesidad de acoplar el texto a lo
que tu necesitas, podrias crearte una pequeña funcion que reciba el texto
como parametro, le agregue un <br/> luego de cierto numero de caracteres y
te lo devuelva nuevamente como string, aunque aqui tendras que manejar y
controlar otros parametros como espacios y demas, es decir, te tomara mas
tiempito meterle código.

a esta funcion la podras llamar desde alguno de los eventos de la grilla que
ya se han mencionado en el hilo, o en su defecto directamente al momento de
hacer el binding desde la pagina aspx

SALUDOS


--
Paúl Calderón P.
MCP, ASP.Net
Cuenca, Ecuador

"Sofia" <sofia...@camaranavarra.com> wrote in message

news:OpjIhItk...@TK2MSFTNGP04.phx.gbl...

Sofia

unread,
May 11, 2007, 4:46:13 AM5/11/07
to
Muchas gracias Paúl, probaré a hacer lo que me dices.

Un saludo.
"Paúl Calderón" <pcal...@neural.com.ec> escribió en el mensaje
news:eyHkGfxk...@TK2MSFTNGP04.phx.gbl...

0 new messages