ASP.NET - Fijar encabezado de un datagrid para q est visible

   
Vista:

Fijar encabezado de un datagrid para q est visible

Publicado por diana (18 intervenciones) el 23/11/2007 13:45:32
Sres tengo un problema con un datagrid en ASP.NET, yo necesito que el encabezado del mismo se quede fijo cuando le hago scrollvertical, mi grid es muy grande es decir que necesito hacerle scrollhorizontal y está bien que al hacerlo no ve las primeras columnas, pero por esto no hay problema el problema está que cuando le doy scrollvertical no puedo ver mi encabezado, cómo puedo hacer yo para que el encabezado esté siempre visible.

Este es mi código:
<div style="z-index: 125; left: 1px; overflow: auto; width: 1081px; position: absolute;top: 173px; height: 467px">
<asp:DataGrid ID="DataGrid1" runat="server" CellPadding="4" ItemStyle-Wrap="true" Height="100px" Style="font-size: 12px; font-family: Arial; left: 0px; position: absolute; top: -1px;" Width="224px" ForeColor="#333333" GridLines="Vertical" BorderColor="White">
<FooterStyle BackColor="#5D7B9D" ForeColor="White" BorderStyle="Solid" Font-Bold="True" BorderColor="#D7EDFB" />
<SelectedItemStyle BackColor="#EBF6FD" Font-Bold="True" ForeColor="#333333" BorderColor="Silver" BorderStyle="Solid" HorizontalAlign="Left" VerticalAlign="Middle" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" BorderColor="#D7EDFB" />
<ItemStyle BackColor="#EBF6FD" ForeColor="#333333" BorderColor="Silver" />
<HeaderStyle BackColor="#2882BE" Font-Bold="True" ForeColor="White" BorderColor="Gainsboro" BorderStyle="Solid" Height="2px" />
<EditItemStyle BackColor="#999999" BorderStyle="Dashed" BorderColor="#D7EDFB" />
<AlternatingItemStyle BackColor="#D7EDFB" BorderColor="Silver" ForeColor="#284775" />
<Columns>
<asp:ButtonColumn CommandName="Select" HeaderText="Edit" Text="edit" ></asp:ButtonColumn>
</Columns>
</asp:DataGrid>
</div>

Por favor ayudenme esto es algo que necesito para mi trabajo y no sé como hacerlo desde ahce tiempo que estoy tratando de resolverlo.

Saludos
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

RE:Fijar encabezado de un datagrid para q est visi

Publicado por DIDI (18 intervenciones) el 27/11/2007 20:50:24
Ya medio solucioné con esto:

Cree un datagrid cabecera encerrado en un div:

<div style="z-index: 125; left: 1px; overflow: hidden; width: 1082px; position: absolute; top: 173px; height: 51px">

<asp:DataGrid ID="DataGrid3" runat="server" CellPadding="3" ItemStyle-Wrap="true" Height="100px" Style="font-size: 12px; font-family: Arial; left: 0px; position: relative; top: -1px;" Width="224px" ForeColor="#333333" GridLines="Vertical" BorderColor="White">
<FooterStyle BackColor="#5D7B9D" ForeColor="White" BorderStyle="Solid" Font-Bold="True" BorderColor="#D7EDFB" />
<EditItemStyle BackColor="#999999" BorderStyle="Dashed" BorderColor="#D7EDFB" HorizontalAlign="Center" VerticalAlign="Middle" Wrap="False" />
<SelectedItemStyle BackColor="#EBF6FD" Font-Bold="True" ForeColor="#333333" BorderColor="Silver" BorderStyle="Solid" HorizontalAlign="Center" VerticalAlign="Middle" Wrap="False" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" BorderColor="#D7EDFB" />
<AlternatingItemStyle BackColor="#D7EDFB" BorderColor="Silver" ForeColor="#284775" HorizontalAlign="Center" VerticalAlign="Middle" Wrap="False" />
<ItemStyle BackColor="#EBF6FD" ForeColor="#333333" BorderColor="Silver" HorizontalAlign="Center" VerticalAlign="Middle" Wrap="True" Height="15px" Width="300px" />
<HeaderStyle BackColor="#2882BE" Font-Bold="True" ForeColor="White" BorderColor="Gainsboro" BorderStyle="Solid" HorizontalAlign="Center" VerticalAlign="Middle" Wrap="True" Height="15px" Width="300px" />
</asp:DataGrid></div>

y otro para las filas:

<div style="z-index: 125; left: 1px; overflow: auto; width: 1082px; position: absolute;
top: 223px; height: 418px" id="divScroll" onscroll="DoScroll()">
<asp:DataGrid ID="DataGrid2" runat="server" CellPadding="3" AutoGenerateColumns=True ItemStyle-Wrap="true"
Height="100px" Style="font-size: 12px; font-family: Arial; left: 1px; position: absolute; top: 0px;" Width="224px" ForeColor="#333333" GridLines="Vertical" BorderColor="White" ToolTip="Grid" Visible="False" ShowHeader="False">
<FooterStyle BackColor="#5D7B9D" ForeColor="White" BorderStyle="Solid" Font-Bold="True" BorderColor="#D7EDFB" />
<EditItemStyle BackColor="#999999" BorderStyle="Dashed" BorderColor="#D7EDFB" HorizontalAlign="Center" VerticalAlign="Middle" Wrap="False" />
<SelectedItemStyle BackColor="#EBF6FD" Font-Bold="True" ForeColor="#333333" BorderColor="Silver" BorderStyle="Solid" HorizontalAlign="Center" VerticalAlign="Middle" Wrap="False" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" BorderColor="#D7EDFB" />
<AlternatingItemStyle BackColor="#D7EDFB" BorderColor="Silver" ForeColor="#284775" HorizontalAlign="Center" VerticalAlign="Middle" Wrap="False" />
<ItemStyle BackColor="#EBF6FD" ForeColor="#333333" BorderColor="Silver" HorizontalAlign="Center" VerticalAlign="Middle" Wrap="True" Height="15px" Width="300px" />
<HeaderStyle BackColor="#2882BE" Font-Bold="True" ForeColor="White" BorderColor="Gainsboro" BorderStyle="Solid" HorizontalAlign="Center" VerticalAlign="Middle" Wrap="True" Height="15px" Width="300px" />
</asp:DataGrid>
</div>

Además tengo una función en javascipt que permite que al mover el scrolbar del grid de filas se mueva el grid del encabezado.

<script language=jscript>
function DoScroll()
{
document.all("DataGrid3").style.pixelLeft=divScroll.scrollLeft*-1;
}
</script>

Pero tengo un problemilla, los anchos de las columnas del grid de encabezado son diferentes a los del grid de las filas y esto se ve feo, porque así hay veces que el nombre de la columna no corresponde con lo de abajo, como puedo hacer para que los anchos de las columnas de ambos grid sean identicos... estuve buscando en la web y me dice que lo haga con una clase datagridtablestyle o algo así, pero en el visual web developer express 2005 que estoy utilizando esto no existe... entonces no sé que más hacer, por fa ayudenme se los ruego... muchas gracias de antemano.
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