1.html
<
HTML
>
< HEAD >
< title > ScrollGrid </ title >
< meta name ="GENERATOR" Content ="Microsoft Visual Studio .NET 7.1" >
< meta name ="CODE_LANGUAGE" Content ="C#" >
< meta name ="vs_defaultClientScript" content ="JavaScript" >
< meta name ="vs_targetSchema" content ="http://schemas.microsoft.com/intellisense/ie5" >
< style >
.fixedHeaderTr {}{ POSITION: relative; ; TOP: expression(this.offsetParent.scrollTop) }
.mainDiv {}{ SCROLLBAR-FACE-COLOR: #9999ff; OVERFLOW: auto; ; WIDTH: expression(document.body.clientWidth-20); ; HEIGHT: expression((document.body.clientHeight-this.offsetTop-20>this.children[0].offsetHeight)?(this.children[0].offsetHeight+20) : (document.body.clientHeight-this.offsetTop-20)) }
</ style >
</ HEAD >
< BODY ms_positioning ="GridLayout" >
< form id ="Form1" method ="post" runat ="server" >
< div class ="mainDiv" >
< asp:DataGrid id ="DataGrid1" runat ="server" BorderColor ="#CC9966" BorderStyle ="None" BorderWidth ="1px"
BackColor ="White" CellPadding ="4" >
< FooterStyle ForeColor ="#330099" BackColor ="#FFFFCC" ></ FooterStyle >
< SelectedItemStyle Font-Bold ="True" ForeColor ="#663399" BackColor ="#FFCC66" ></ SelectedItemStyle >
< ItemStyle ForeColor ="#330099" BackColor ="White" ></ ItemStyle >
< HeaderStyle Font-Bold ="True" ForeColor ="#FFFFCC" BackColor ="#990000" ></ HeaderStyle >
< PagerStyle HorizontalAlign ="Center" ForeColor ="#330099" BackColor ="#FFFFCC" ></ PagerStyle >
</ asp:DataGrid >
</ div >
</ form >
</ BODY >
</ HTML >
2.cs 代码
< HEAD >
< title > ScrollGrid </ title >
< meta name ="GENERATOR" Content ="Microsoft Visual Studio .NET 7.1" >
< meta name ="CODE_LANGUAGE" Content ="C#" >
< meta name ="vs_defaultClientScript" content ="JavaScript" >
< meta name ="vs_targetSchema" content ="http://schemas.microsoft.com/intellisense/ie5" >
< style >
.fixedHeaderTr {}{ POSITION: relative; ; TOP: expression(this.offsetParent.scrollTop) }
.mainDiv {}{ SCROLLBAR-FACE-COLOR: #9999ff; OVERFLOW: auto; ; WIDTH: expression(document.body.clientWidth-20); ; HEIGHT: expression((document.body.clientHeight-this.offsetTop-20>this.children[0].offsetHeight)?(this.children[0].offsetHeight+20) : (document.body.clientHeight-this.offsetTop-20)) }
</ style >
</ HEAD >
< BODY ms_positioning ="GridLayout" >
< form id ="Form1" method ="post" runat ="server" >
< div class ="mainDiv" >
< asp:DataGrid id ="DataGrid1" runat ="server" BorderColor ="#CC9966" BorderStyle ="None" BorderWidth ="1px"
BackColor ="White" CellPadding ="4" >
< FooterStyle ForeColor ="#330099" BackColor ="#FFFFCC" ></ FooterStyle >
< SelectedItemStyle Font-Bold ="True" ForeColor ="#663399" BackColor ="#FFCC66" ></ SelectedItemStyle >
< ItemStyle ForeColor ="#330099" BackColor ="White" ></ ItemStyle >
< HeaderStyle Font-Bold ="True" ForeColor ="#FFFFCC" BackColor ="#990000" ></ HeaderStyle >
< PagerStyle HorizontalAlign ="Center" ForeColor ="#330099" BackColor ="#FFFFCC" ></ PagerStyle >
</ asp:DataGrid >
</ div >
</ form >
</ BODY >
</ HTML >
public
class
ScrollGrid : System.Web.UI.Page
{
//记得要引用
//using System.Data.SqlClient;
//using System.IO;
//using System.Text.RegularExpressions;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private void Page_Load(object sender, System.EventArgs e)
{
DataBind();
}
Render#region Render
protected override void Render(HtmlTextWriter writer)
{
//原理就是把表头<tr></tr>标签替换为<tr class="fixedHeaderTr"></tr>
TextWriter tempWriter = new StringWriter();
base.Render(new HtmlTextWriter(tempWriter));
string oldtr = "<tr style=/"color:#FFFFCC;background-color:#990000;font-weight:bold;/">";
string newtr = "<tr class=/"fixedHeaderTr/" style=/"color:#FFFFCC;background-color:#990000;font-weight:bold;/">";
writer.Write(Regex.Replace(tempWriter.ToString(),oldtr,newtr,RegexOptions.IgnoreCase));
}
#endregion
DataBind#region DataBind
private void DataBind()
{
string sql="select * from testgrid";
DataSet ds=GetDataSet(sql);
this.DataGrid1.DataSource=ds;
this.DataGrid1.DataBind();
}
#endregion
GetDataSet#region GetDataSet
private DataSet GetDataSet(string sql)
{
string constring=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
SqlDataAdapter sda =new SqlDataAdapter(sql,constring);
DataSet ds=new DataSet();
sda.Fill(ds);
return ds;
}
#endregion
Web Form Designer generated code#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/**//// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
3.源代码下载
/Files/singlepine/WebApplication1.rar
{
//记得要引用
//using System.Data.SqlClient;
//using System.IO;
//using System.Text.RegularExpressions;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private void Page_Load(object sender, System.EventArgs e)
{
DataBind();
}
Render#region Render
protected override void Render(HtmlTextWriter writer)
{
//原理就是把表头<tr></tr>标签替换为<tr class="fixedHeaderTr"></tr>
TextWriter tempWriter = new StringWriter();
base.Render(new HtmlTextWriter(tempWriter));
string oldtr = "<tr style=/"color:#FFFFCC;background-color:#990000;font-weight:bold;/">";
string newtr = "<tr class=/"fixedHeaderTr/" style=/"color:#FFFFCC;background-color:#990000;font-weight:bold;/">";
writer.Write(Regex.Replace(tempWriter.ToString(),oldtr,newtr,RegexOptions.IgnoreCase));
}
#endregion
DataBind#region DataBind
private void DataBind()
{
string sql="select * from testgrid";
DataSet ds=GetDataSet(sql);
this.DataGrid1.DataSource=ds;
this.DataGrid1.DataBind();
}
#endregion
GetDataSet#region GetDataSet
private DataSet GetDataSet(string sql)
{
string constring=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
SqlDataAdapter sda =new SqlDataAdapter(sql,constring);
DataSet ds=new DataSet();
sda.Fill(ds);
return ds;
}
#endregion
Web Form Designer generated code#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/**//// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
代码里面的数据库及web.config要自己修改。