헤더 고정시키고 그리드내 내용을 스크롤하는 방법입니다.
아직 수정할 부분도 있으나 필요한 기능이라서 그냥 올립니다..
정확한 것은 아직 확실하게 모르나 asp.net 2.0(web2.0)에서는 간단히 구현가능하다고 합니다..
자 그럼 구현하는 방법은 aspx내에 그냥 만들면 되더군요...
스타일을 만들어서 헤더는 고정하는 방법이죠..
다른 방법도 있겠지만 이 방법이 제일 간단하더군요..
스타일을 직접 aspx내에 넣는 경우
<style type="text/css">
<!--
.DataGridFixedHeader {background-color: white; position:relative; top:expression(this.offsetParent.scrollTop);}
-->
</style>
스타일 파일을 만드는 경우
aspx내에
<LINK href="../COMMON/style.css" type="text/css" rel="stylesheet">
스타일 파일 내에
.DataGridFixedHeader
{
background-color: white;
position:relative;
top:expression(this.offsetParent.scrollTop-2);
}
만듭니다.
그리고 데이터 그리드를 스크롤 하기 위해 div태그를 이용함.
<DIV style="OVERFLOW: auto; HEIGHT: 120px">
<asp:datagrid id="DataGrid1" runat="server" Width="750px" Font-Size="12px"
중간생략....
// 아래의 CssClass="ms-formlabel DataGridFixedHeader" 를 HeaderStyledp 추가함.
<HeaderStyle중략... CssClass="ms-formlabel DataGridFixedHeader"
></HeaderStyle>
중간생략....
</asp:datagrid>
</DIV>
이렇게 하면 됩니다..
그리고 cellpading값을 주게 된다면
top:expression(this.offsetParent.scrollTop-2);
패딩값만큼 빼주시면 최상단에 맞춰지게 되더군요

데브피아 답변 그대로 붙인거 편집하나 없이...ㅋㅋㅋ



헤더를 고정시키는 방법은 헤더 위치를 고정시키는 스타일 클래스를 작성하고

헤더를 Div에 넣는 형태로 구현할 수 있습니다.


우선 다음과 같이 헤더를 고정시키는 스타일 클래스를 작성하시구요

<style type=text/css>

.DataGridFixedHeader {

POSITION: relative;

TOP: expression(this.offsetParent.scrollTop);

}
</style>


다음에 데이터 그리드를 Flow Div에 넣습니다.

<DIV style="OVERFLOW: auto; WIDTH: 800px; HEIGHT: 600px">

<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" BorderWidth="1px" Width="800px" AllowSorting="True">
<FooterStyle></FooterStyle>
<SelectedItemStyle></SelectedItemStyle>
<AlternatingItemStyle></AlternatingItemStyle>
<ItemStyle></ItemStyle>
<HeaderStyle cssclass="ms-formlabel DataGridFixedHeader"VerticalAlign="Top"></HeaderStyle>

</asp:datagrid>

</DIV>


그리고 마지막으로 그리드 헤더 스타일을 위에서 정의한 클래스로 지정합니다.

이렇게 하면 헤더가 특정 위치에 고정되게 됩니다.


그런데, 헤더가 특정한 위치에 고정은 되는데 DIV 안에 들어가지 않는 경우가 있습니다.

즉, 스크롤할 경우에 헤더가 제멋대로 혼자서 떠다닌다거나 맘대로 없어지기도 하는데요.


이 증상의 원인을 알 수는 없지만 VS.NET에서 만들어주는 아래와 같은 다큐먼트 타이프 지시자를 없애면 그런 증상이 사라집니다.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

물론 <HEAD> 라는 태크에도 속성을 지정하지 않는 편이 좋습니다.


저런 형식으로 하면 헤더 고정과 함께, 소팅 등 이벤트 처리도 가능합니다.

Posted by 퓨전마법사
,