如题,
实现此功能是为了查看大数据量时方便。

解决方案 »

  1.   

    <%@ Page language="c#" Codebehind="表头固定数据可拖动的DataGrid.aspx.cs" AutoEventWireup="false" Inherits="WebApplication1.WebForm1" %>
    <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-100); ; HEIGHT: expression((document.body.clientHeight-this.offsetTop-80>this.children[0].offsetHeight)?(this.children[0].offsetHeight+80)/2 : (document.body.clientHeight-this.offsetTop-80)/2) } 
    </style>
    </HEAD>
    <BODY ms_positioning="GridLayout">
    <form id="Form1" method="post" runat="server">
    <TABLE id="Table1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" cellSpacing="1"
    cellPadding="1" width="98%" border="2">
    <TR>
    <TD colspan="3">↗ ↗ ↗ ↗ ↗
    </TD>
    </TR>
    <TR>
    <TD>左1</TD>
    <TD><div class="mainDiv">
    <asp:DataGrid id="DataGrid1" runat="server" BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px"
    BackColor="White" CellPadding="4" Width="100%">
    <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>
    </TD>
    <TD>右1</TD>
    </TR>
    <TR>
    <TD>左2</TD>
    <TD><div class="mainDiv">
    <asp:DataGrid id="DataGrid2" runat="server" BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px"
    BackColor="White" CellPadding="4" Width="100%">
    <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>
    </TD>
    <TD>右2</TD>
    </TR>
    <TR>
    <TD colspan="3">↘ ↘ ↘ ↘ ↘
    </TD>
    </TR>
    </TABLE>
    </form>
    </BODY>
    </HTML>
      

  2.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using System.IO;
    using System.Text.RegularExpressions;
    namespace WebApplication1
    {
    /// <summary>
    /// Summary description for WebForm1.
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
            protected System.Web.UI.WebControls.DataGrid DataGrid2;
    protected System.Web.UI.WebControls.DataGrid DataGrid1;

    private void Page_Load(object sender, System.EventArgs e)
    {
    DataBind1();
               
    } private void DataBind1()
    {
     DataTable dt1 = new DataTable();
                dt1.Columns.Add("字段一");
                dt1.Columns.Add("22222");
                dt1.Columns.Add("33333");
                dt1.Columns.Add("44444");
                dt1.Columns.Add("55555");
                dt1.Columns.Add("66666");
                dt1.Columns.Add("77777");
                dt1.Columns.Add("88888");
                Random radm = new Random();
                for(int i=1;i<50;i++)
                {
                    dt1.Rows.Add(new object[]{i,(i+1)*(i+2),radm.Next(10000),i,(i+1)*(i+2),radm.Next(10000).ToString()+"iuweahgiwaefweiuyfg","--------------","-----------"});
                }            this.DataGrid1.DataSource=dt1;
                this.DataGrid1.DataBind();
    //            this.DataGrid2.DataSource=dt1;
    //            this.DataGrid2.DataBind();
    }

            private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
            {
                if(e.Item.ItemType == ListItemType.Header)
                {
                    e.Item.Attributes.Add("class","fixedHeaderTr");
                }
            }        #region Web 窗体设计器生成的代码
            override protected void OnInit(EventArgs e)
            {
                //
                // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
                //
                InitializeComponent();
                base.OnInit(e);
            }

            /// <summary>
            /// 设计器支持所需的方法 - 不要使用代码编辑器修改
            /// 此方法的内容。
            /// </summary>
            private void InitializeComponent()
            {    
                this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
                this.DataGrid2.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
                this.Load += new System.EventHandler(this.Page_Load);        }
            #endregion
        }
    }