页眉已经通过
e.Item.Attributes.Add("style", "position:relative; top:expression(this.offsetParent.scrollTop);");
方法固定住了,请问如何固定左边的第一列?

解决方案 »

  1.   

    这样就不清楚了,绑定在二个DataGrid应该可以吧,不动的一个,动的一个,晕晕
      

  2.   

    这个我没试过,别用datagrid,用datalist然后自己布局把第一列放到一个单独的div里面,然后尝试一下控制这个div的postion也许可行。
      

  3.   

    <%@ Page language="c#" Codebehind="WebForm5.aspx.cs" AutoEventWireup="false" Inherits="test.WebForm5" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <TITLE>WebForm5</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">
    <LINK href="Styles.css" type="text/css" rel="stylesheet">
    </HEAD>
    <BODY ms_positioning="GridLayout">
    <SCRIPT for="window" event="onload" language="JScript">
    MoveLayer('Layer1');
    </SCRIPT>
    <SCRIPT language="JScript">
    <!--
    function MoveLayer(layerName) {
    var x = 0;
    var diff = (document.all.tt.scrollLeft + x - document.all.Layer1.style.posLeft)*.40;
    var x = document.all.tt.scrollLeft + x - diff + 2;
    eval("document.all." + layerName + ".style.posLeft = x");
    setTimeout("MoveLayer('Layer1');", 20);
    }
    //-->
    </SCRIPT>
    <FORM id="Form1" method="post" runat="server">
    <FONT face="宋体">
    <DIV id="tt" style="width:200px;height:150px;overflow:auto;Z-INDEX: 101; LEFT: 48px; POSITION: absolute; TOP: 152px">
    <ASP:DATAGRID id="DataGrid1" autogeneratecolumns="False" runat="server" width="1000">
    <ITEMSTYLE height="50" wrap="False"></ITEMSTYLE>
    <COLUMNS>
    <ASP:TEMPLATECOLUMN>
    <ITEMSTYLE width="61px" height="50px"></ITEMSTYLE>
    <ITEMTEMPLATE>
    <DIV id=Layer<%#DataBinder.Eval(Container.DataItem, "employeeid")%> style='position:absolute; width:61px;height=48px;  z-index:20; left: 0px; top: 20px;background-color:white;'>
    <%#DataBinder.Eval(Container.DataItem, "LastName")%>
    </DIV>
    </ITEMTEMPLATE>
    </ASP:TEMPLATECOLUMN>
    <ASP:BOUNDCOLUMN datafield="employeeid" headertext="employeeid" itemstyle-width="50px"></ASP:BOUNDCOLUMN>
    <ASP:BOUNDCOLUMN datafield="LastName" headertext="LastName" itemstyle-width="150px"></ASP:BOUNDCOLUMN>
    <ASP:BOUNDCOLUMN datafield="FirstName" headertext="FirstName" itemstyle-width="150px"></ASP:BOUNDCOLUMN>
    <ASP:BOUNDCOLUMN datafield="Title" headertext="Title" itemstyle-width="250px"></ASP:BOUNDCOLUMN>
    <ASP:BOUNDCOLUMN datafield="TitleOfCourtesy" headertext="TitleOfCourtesy" itemstyle-width="150px"></ASP:BOUNDCOLUMN>
    <ASP:BOUNDCOLUMN datafield="BirthDate" headertext="BirthDate" itemstyle-width="250px"></ASP:BOUNDCOLUMN>
    </COLUMNS>
    </ASP:DATAGRID>
    </FONT></div>
    </FORM>
    </BODY>
    </HTML>
      

  4.   

    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;namespace test
    {
    /// <summary>
    /// WebForm5 的摘要说明。
    /// </summary>
    public class WebForm5 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.DataGrid DataGrid1;

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    BindGrid();

    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void BindGrid()
    {
    SqlConnection conn = new SqlConnection("server=(local);database=northwind;uid=sa;pwd=;");
    SqlCommand cmd = new SqlCommand("select * from employees", conn); conn.Open();
    DataGrid1.DataSource = cmd.ExecuteReader();
    DataGrid1.DataBind();
    conn.Close();
    } }
    }
      

  5.   

    if((e.Item.ItemType == ListItemType.Item) ||(e.Item.ItemType == ListItemType.AlternatingItem)||(e.Item.ItemType == ListItemType.Header))
             {
    e.Item.Cells[0].Attributes.Add("style", " LEFT: expression(document.getElementById('divname').scrollLeft); POSITION: relative;");
    }
      

  6.   

    http://www.codeproject.com/aspnet/FreezePaneDatagrid.asp