效果图:
代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>GridView固定表头 清清月儿http://blog.csdn.net/21aspnet </title>
        <style> 
.Freezing 
   { 
    
   position:relative ; 
   table-layout:fixed;
   top:expression(this.offsetParent.scrollTop);   
   z-index: 10;
   } .Freezing th{text-overflow:ellipsis;overflow:hidden;white-space: nowrap;padding:2px;}
</style> 
</head>
<body style="font-size=12px">
    <form id="form1" runat="server">
    <div style="overflow-y: scroll; height: 200px;width:300px" id="dvBody">
                   <asp:GridView ID="GridView1" runat="server"    AutoGenerateColumns="False" CellPadding="3" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing"
                        OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" Font-Size="12px" OnRowCreated="GridView1_RowCreated"  >
                        <FooterStyle BackColor="White" ForeColor="#000066" />
                        <Columns>
                            <asp:BoundField DataField="身份证号码" HeaderText="编号" ReadOnly="True" />
                            <asp:BoundField DataField="邮政编码" HeaderText="邮政编码" SortExpression="邮政编码" />
                            <asp:BoundField DataField="家庭住址" HeaderText="家庭住址"  />
                            <asp:BoundField DataField="姓名" HeaderText="姓名"  />
                            
                        </Columns>
                        <RowStyle ForeColor="#000066" />
                        <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
                        <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left"  CssClass="ms-formlabel DataGridFixedHeader"/>
                        <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" CssClass="Freezing"/>
                    </asp:GridView>
        </div>    </form>
</body>
</html>用法:CSS设如上的样式,HeaderStyle加CssClass="Freezing,套住GridView的Div设置高度宽度 <div style="overflow-y: scroll; height: 200px;width:200px" >
可是有一个问题是:

解决方案 »

  1.   


    可是问题是:
    通过滚动div滑块后,可以看到并选择较靠后的数据,但是,当激发事件发生后,GridView又会返回到页面刚刚初始时的状态,即div滑块没有动,看不到刚才看到的那条较靠后的数据
    我的意思是:如何在激发数据后,还是能看到刚才选择的那条较靠后的数据
    不好意思,我描述不清。如果有图片更好了。
      

  2.   

    在Page_Load里加上   
      this.SmartNavigation=true;
      

  3.   


    function fnLoad()
    {
    if(window.document.all["div_DataGrid2"] == null)
    return;
    window.document.all["div_DataGrid2"].scrollTop = window.document.getElementById("hdnTopScroll").value;
    window.document.body.scrollTop = window.document.getElementById("hdnFrmScroll").value;
    } function fnScroll()
    {
    if(window.document.all["div_DataGrid2"] == null)
    return;
    window.document.getElementById("hdnTopScroll").value  = window.document.all["div_DataGrid2"].scrollTop;
    window.document.getElementById("hdnFrmScroll").value  = window.document.body.scrollTop;
    }<body onscroll="fnScroll()" onload="fnLoad();">
    <input id="hdnTopScroll" type="hidden" name="hdnTopScroll" runat="server">
    <input id="hdnFrmScroll" type="hidden" name="hdnFrmScroll" runat="server"> 
    <div id="div_DataGrid2" onscroll="fnScroll()">
    <gridview id="xx" runat=server>
    </gridview>
    </div>
    </body>
      

  4.   

    固定表头
    http://blog.csdn.net/breezeforever/archive/2007/04/05/1552986.aspx