SoloCodigo
CLR: .Net / Mono / Boo / Otros CLR => ASP .NET => Mensaje iniciado por: meli_lacruda en Viernes 30 de Noviembre de 2007, 19:45
-
Hola!
Doy la explicación igual mando un print screen de lo que estoy intentando hacer para q se entienda bien.
Tengo el siguiente datagrid (saque propiedades de estilo para que sea mas legible en este mensaje)
<asp:DataGrid id="dgGroupDetail">
<ItemStyle Font-Size="7pt"></ItemStyle>
<HeaderStyle Height="20" ></HeaderStyle>
<COLUMNS>
<ASP:BOUNDCOLUMN HeaderText="Country" dataField="country_mes" /> <ASP:BOUNDCOLUMN HeaderText="Customer" DataField="customer_mes" />
<ASP:BOUNDCOLUMN HeaderText="Country" DataField="country_anio" />
<ASP:BOUNDCOLUMN HeaderText="Customer" DataField="customer_anio" />
</COLUMNS>
</DataGrid>
Éste Datagrid, entonces tiene 4 columas, donde en el header se muestran los Títulos o nombres de las columnas, o sea:
Country Customer Country Customer
El datagrid se llena con datos que varían todo el tiempo, por lo tanto la longitud de las columnas varía a la vez. Yo quiero poner otro header que me separe lo mensual de lo anual:
| Mensual | Anual |
|Country Customer| Country Customer|
--- datos----
EL PROBLEMA esta en que el datagrid solo tiene 1 header y yo necesito 2, por lo menos hasta ahí llega mi conocimiento..
Yo podría poner | Mensual | Anual | en una tr y todo en una tabla pero cuando la longitud de los datos se extiende se me defasan los títulos y me queda desalineado
Espero que alguien me pueda responder!..
Muchas Gracias!!
-
Hola, se me ocurren dos cosas.
1. Creo que cambiaria menos tu codigo:
Te haces las etiquetas de la primera cabecera a mano y las situas encima de la cabecera del datagrid para simular dos cabeceras.
2. Algo mas elaborado:
Te creas una table de asp a la que puedes dar valores fijos de columnas y utilizar la propiedad wrap para que el texto se divida en varias lineas.
En este caso darias un tamaño fijo a la tabla y la primera cabecerea tendria dos columnas y la segunda cuatro. Es decir, si el tamaño son 100 px, las columnas de la cabecera 1 serian de 50 px y las de la cabecera 2 de 25 px.
Saludos
-
Puedes incluir encabezados personalizados.... aqui te pongo una imagen de mi aplicacion donde no solo tengo 2, tengo 3 encabezados...
todo se hace en el ItemCreate del DataGrid
TableCell dgCellOtorgados = new TableCell();
--- cuantas columnas quieres que ocupe tu encabezado
dgCellOtorgados.ColumnSpan = 10;
dgCellOtorgados.HorizontalAlign = HorizontalAlign.Center;
dgCellOtorgados.CssClass = "SuperHeaders";
dgCellOtorgados.Height = alturaSuperHeader;
-- TExto que va a tener la columna de encabezado
dgCellOtorgados.Text = "Otorgado";
-- Agregas la el encabezado
dgItem.Cells.Add(dgCellOtorgados);
TableCell dgCellNaturales = new TableCell();
dgCellNaturales.ColumnSpan = 4;
dgCellNaturales.HorizontalAlign = HorizontalAlign.Center;
dgCellNaturales.CssClass = "SubHeaders";
dgCellNaturales.Height = alturaSubHeaders;
dgCellNaturales.Text = "Naturales";
dgItemSub.Cells.Add(dgCellNaturales);
TableCell dgCellAdicionales = new TableCell();
dgCellAdicionales.ColumnSpan = 4;
dgCellAdicionales.HorizontalAlign = HorizontalAlign.Center;
dgCellAdicionales.CssClass = "SubHeaders";
dgCellAdicionales.Height = alturaSubHeaders;
dgCellAdicionales.Text = "Adicionales";
dgItemSub.Cells.Add(dgCellAdicionales);