一万行的数据,在客户端如果不分页的话,用DataGrid等HTML类控件很难显示出来,即使能显示出来其网页也难以操作。请问有什么好的方法以让客户端容纳这么大的数据量,如采用activeX控件等
另因是在内网,传输速度不成问题。

解决方案 »

  1.   

    不分页?why?
    好像没什么好办法
      

  2.   

    robertlvqing() ( ) 信誉:100    Blog  2006-09-04 16:51:00  得分: 0  
     
     
       不分页?why?
    好像没什么好办法
      
     
    -------------
    9494
      

  3.   

    写一个自定义控件.继承自datagrid,可以在里面加一个分隔条
      

  4.   

    实际一点的话类似省市县下拉列表的AJAX联动,全国那么多县也是一个页面搞定,你说你网速不成问题的
      

  5.   

    用XML应该可以解决你的问题。
    生成静态页面也应该可以。
      

  6.   

    <%@ 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>
    ***********************************
    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
        }
    }
      

  7.   

    如果是内网,干脆C/S好了,何必非要用asp.net~ 还不分页~activeX跟解决这个问题没有太大关系,反正数据都是一次传送到客户端~
      

  8.   

    或许你可以先加载1000行,加入DataGrid,随后再加其他的。这中间可以用时间器来控制,隔个几秒或几微秒!或者就分为10个DataSet,将数据库中读出的数据分为10份放入,一个DataSet添满1000行后,赋给DataGrid,然后再添加其他DataSet,这样可以缓解赋值时带来的缓慢!让客户不至于等很久!
      

  9.   

    直接用response.write,五万笔的也就1,2十秒,就是格式没那么好看了
      

  10.   

    用户1G内存,p43.0处理器,100M独享带宽,好爽,我想没有问题吧,呵呵,顶一下
      

  11.   

    一万的循环,楼主有库可以自己试试。直接循环写表格!while(dtr.Read()){<tr><td><%=dtr.GetValue(1) %></td></tr>}
    大致是这样!自己写一段试试!
      

  12.   

    支持wanghu830424(阿虎)的做法,不过确实,老兄,一万行,用户真的会用吗?
    用户自定义控件,继承GridView,应该可以的,不过速度也可想而知!
      

  13.   

    ajax处理,但是速度可能会非常慢。
      

  14.   

    按照Avoid说的,生成静态页面
      

  15.   

    我也想知道哟   CSDN的帖子好像就是不分页的?  就我们现在看的这个页面!!
      

  16.   

    不建议Ajax的,会使用户感觉死掉了。我想先请教,1万行数据不分页的好处是什么?如果是为了某种特殊的目的,那么看看是否有其他的办法来实现这个目的,何必非如此这样呢?
      

  17.   


    <%@ 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>
    ***********************************
    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
        }
    }
      

  18.   

    直接填充DataGrid然后绑定,自动会缓存的,下次就快了,可是用户会很累的赫赫
      

  19.   

    你可以用一个报表控件,ITGrid很好用的。速度快,量大
      

  20.   

    用excel阿Response.ContentType ="application/vnd.ms-excel"
      

  21.   

    把每列都写在TABLE里
    <tr><td>绑定</td><tr><br>
    不知道浏览器能不能显示这么多呢
      

  22.   

    AJAX,比如刚打开显示100条,然后每三秒增加100条,就像Realplay缓冲一样,不用一下子打开一万条造成负荷瓶颈,而页面又不刷新,从效率和用户体验上都还是可行的。
      

  23.   

    用iframe,每个iframe显示200条,50个iframe。