ASP.NET - Problema con Header fijo y alineación con su respectiva columna al mostrar consultas en un gridview

   
Vista:

Problema con Header fijo y alineación con su respectiva columna al mostrar consultas en un gridview

Publicado por Maxi N. (23 intervenciones) el 03/03/2015 03:57:40
Hola, les paso a comentar mi inconveniente. resulta que tengo un gridview en donde quiero dejar fijo el Header, hasta acá no habia inconvenientes ya que habia creado una tabla con los encabezados de cada campo y debajo se ubicaba el gridview, mi problema es que al hacer consultas y refrescar el gridview las columnas van variando el ancho, debido a que trabajo con direcciones, nombres y apellidos, y depende de la consulta aparecen cadenas mas cortas o mas largas en el gridview, ocasionando que la alineación de los encabezados no coincidan con el ancho de la columna del campo correspondiente, ocasionando que se desacomode todo. Mi pregunta es: hay alguna forma de poder adaptar los headers para que siempre estén visibles y que coincidan con el ancho de las columnas de la consulta?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema con Header fijo y alineación con su respectiva columna al mostrar consultas en un gridview

Publicado por Khristian (335 intervenciones) el 03/03/2015 19:57:38
Pero si al habilitar el encabezado.... siempre está visible. Excepto.. cuando no hay datos.

Entonces... puedes dejar tu tabla como plantilla solo para cuando no se devuelven datos, y cuando hay datos, usas el encabezado del mismo gridview que se ajusta a cada columna.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con Header fijo y alineación con su respectiva columna al mostrar consultas en un gridview

Publicado por Maximiliano Nicolás (23 intervenciones) el 03/03/2015 22:03:02
Hola Khristian, creo que no me expliqué bien, lo que yo quiero hacer es que los encabezados estén siempre visibles aún cuando hago scroll en un listado largo (que no desaparezca de la vista), mi problema es que no encuentro la forma de que dinámicamente el ancho de los encabezados se ajusten al ancho de los registros del gridview, ya que la única forma hasta ahora de hacer algo similar a lo que quiero es crear una tabla con los encabezados en un DIV y debajo de éste crear otro DIV con el respectivo GridView.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con Header fijo y alineación con su respectiva columna al mostrar consultas en un gridview

Publicado por Khristian (335 intervenciones) el 05/03/2015 19:44:27
Yo lo haría así.

Pones dos controles Panel.

Panel 1:
Ancho (Suma del ancho de todas las columnas)
El alto lo dejas al alto del contenido.

Panel 2:
Ancho (Suma del ancho de todas las columnas)
El alto lo dejas, por ejemplo a unos 600px
A este panel le activas la barra de scroll vertical.

En el panel 1 debes crear los encabezados, usando para cada columna un ancho acorde al contenido.
Por ejemplo, si la columna mostrará un nombre de persona, le das un ancho razonable, y le activas el text wrap.
Si la columna mostrará un valor monetario, calculas un ancho para el valor máximo que se pueda mostrar. Este no debe tener activado el text wrap.
en definitiva, la idea es que no ajustes el encabezado a las columnas, sino, dale anchos fijos, y ajusta los anchos de las columnas del gridview a los anchos prefijados del encabezado.

Así tendrás los anchos del encabezado acorde a los anchos del gridview.

Ahora, para mantener en encabezado visible, lo logras poniendo en encabezado en el Panel 1.
El GridView lo pones en el Panel 2, el cual actúa de contenedor con scroll.

Eso seria como lo mas fácil..
También puedes jugar con propiedades CSS en Div.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con Header fijo y alineación con su respectiva columna al mostrar consultas en un gridview

Publicado por Antoni (7 intervenciones) el 11/03/2015 09:25:35
Creo que es más cómodo y más correcto, utilizar el gridview y habilitar la paginación (PageSize) por ejemplo en 20 registros.
Y para rizar el rizo, puedes habilitar un combo para poner distintos valores de paginación, por ejemplo 50, 75, 100, ... y utilizar el valor escogido para habilitar el PageSize al nuevo valor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Problema con Header fijo y alineación con su respectiva columna al mostrar consultas en un gridview

Publicado por Khristian (335 intervenciones) el 11/03/2015 19:04:09
50 registros (filas) no se muestran en una pantalla y fuente normal.... habrá que hacer scroll, perdiéndose los encabezados visibles.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con Header fijo y alineación con su respectiva columna al mostrar consultas en un gridview

Publicado por Maximiliano Nicolás (23 intervenciones) el 11/03/2015 21:25:38
Hola Antoni, la verdad que no se me habia ocurrido el tema de habilitar la paginación, estuve tratando de hacer funcionar el gridview con la paginación pero tambien tengo problemas. al cambiar las propiedades allowpaging = "true" y darle pagesize = 15 definí el evento GridView1_PageIndexChanging son la linea:
this.GridView1.PageIndex = e.NewPageIndex;

no coloco this.GridView1.DataBind(); dentro del evento por que sino el contenido del gridview me va a aparecer vacio.

el GridView1.DataBind(); lo utilizo en un control button cuando actualizo el contenido del gridview.

obviamente dentro del html del gridview se define onpageindexchanging="GridView1_PageIndexChanging"

el problema es que al probar la web y querer pasar de una pagina a la otra dentro del grid, el dopostback no se ejecuta en el primer click, pasa a la pagina deseada en el segundo click. ademas, cuando aparentemente pasa a la pagina clickeada los datos son los mismos, es decir, no me actualiza el gridview con los datos correspondientes a dicha pagina.


te cuento que cargo el gridview en el page_load en un if (!Page.IsPostBack) para cargarla por primera vez ya que despues con controles voy actualizando el contenido del gridview.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con Header fijo y alineación con su respectiva columna al mostrar consultas en un gridview

Publicado por Maximiliano Nicolás (23 intervenciones) el 11/03/2015 22:03:54
Hola de nuevo! recien acabo de solucionar el problema de paginacion en el gridview. resulta que además de ejecutar el método dentro del control button1_click el cual hace la consulta para cargarla en el gridview, dicho método también tengo que ejecutarlo en GridView1_PageIndexChanging... no me parece que sea muy eficiente ejecutar dos veces el mismo metodo cuando hago click en el button1 pero asi funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con Header fijo y alineación con su respectiva columna al mostrar consultas en un gridview

Publicado por Antoni (7 intervenciones) el 12/03/2015 08:57:07
Estoy de acuerdo contigo, pero así es cómo funciona.
Yo también había pensado en ello, pero buscando ideas desistí de encontrar otra solución. Incluso Microsoft la presenta de esta manera.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar