CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

问了半个月了,关于repeater控件绑定效率问题!来者有分!

楼主huntbookren()2006-05-01 14:43:33 在 .NET技术 / ASP.NET 提问

aspx文件如下:  
  <TD>出版日期:<%#   ((DataRowView)Container.DataItem)["chubanriqi"]   %></TD>  
  <TD>出版日期:<%#   ((DataRowView)Container.DataItem)["zuozhe"]   %></TD>  
  <TD>出版日期:<%#   ((DataRowView)Container.DataItem)["zishu"]   %></TD>  
  <TD>出版日期:<%#   ((DataRowView)Container.DataItem)["chubanshe"]   %></TD>  
  <TD>出版日期:<%#   ((DataRowView)Container.DataItem)["neirongjianjie"]   %></TD>  
   
  cs文件如下:  
  OleDbConnection   objConn=new   OleDbConnection("Provider=sqloledb;Data   Source=libaoli;Initial   Catalog=huntbook_books;User   Id=sa;Password=123;");        
  string   strCommand   =   "select   *   from   "   +   strDatabase;      
   
  OleDbDataAdapter   objCommand=new   OleDbDataAdapter(strCommand,objConn);  
  DataSet   ds=new   DataSet();  
                      objCommand.Fill(ds);  
  PagedDataSource   objPds   =   new   PagedDataSource();  
  objPds.DataSource   =   ds.Tables[0].DefaultView;  
  objPds.AllowPaging   =   true;  
  objPds.PageSize   =   4;  
  this.Label1.Text   ="此类书籍共"   +   objPds.PageCount.ToString()   +   "页";  
  int   CurPage;  
  if   (Request.QueryString["Page"]   !=   null)  
  CurPage=Convert.ToInt32(Request.QueryString["Page"]);  
  else  
  CurPage=1;  
  objPds.CurrentPageIndex   =   CurPage-1;  
  lblCurrentPage.Text   =   "当前页:"   +   CurPage.ToString();  
  if   (!objPds.IsFirstPage)  
  lnkPrev.NavigateUrl=Request.CurrentExecutionFilePath   +   "?Page="   +   Convert.ToString(CurPage-1);  
  if   (!objPds.IsLastPage)  
  lnkNext.NavigateUrl=Request.CurrentExecutionFilePath   +   "?Page="   +   Convert.ToString(CurPage+1);  
  Repeater1.DataSource=objPds;  
  Repeater1.DataBind();  
   
   
  我数据库中的资料有6千条记录,当运行这个程序的时候,Repeater1.DataBind();这行要浪费4分钟时间,请问怎么绑定速度最快啊??????  
  问题点数:20、回复次数:19Top

1 楼guye99(沙洛)回复于 2006-05-01 16:13:40 得分 0

占位...Top

2 楼ycs0501(IT'BUG)回复于 2006-05-01 21:58:25 得分 0

好复杂呀  
  帮你upTop

3 楼jianyi0115(随意)回复于 2006-05-01 22:04:00 得分 0

6千条记录?你一次全部显示啊/?怎么不做分页/?/?/?Top

4 楼jianyi0115(随意)回复于 2006-05-01 22:06:03 得分 0

换用DataGrid试一试  
   
  <%#   ((DataRowView)Container.DataItem)["chubanriqi"]   %>  
   
  你这样写每行,每个字段都要做强制类型转换的,性能低的一个原因.Top

5 楼huntbookren()回复于 2006-05-01 22:10:33 得分 0

我必须用repeater,请问怎么解决这个问题!!Top

6 楼huntbookren()回复于 2006-05-01 22:13:16 得分 0

TO:   jianyi0115  
   
  我已经作分页了,每页显示4条记录,上面的cs文件有主要实现代码。  
   
  请问我的程序为什么这么慢啊??Top

7 楼wyj10172002()回复于 2006-05-02 08:18:08 得分 0

用存储过程,Top

8 楼huntbookren()回复于 2006-05-02 10:33:23 得分 0

我写存储过程了,可是还是不行啊!  
  /*两个存储过程!  
  ==================================================================================  
  //select   *   from   apd   where   leibie='软件与程序设计/VB/'  
     
  CREATE   PROCEDURE   A  
  @table_name   varchar(20),@strsql   varchar(200)    
  AS    
  exec('select   *   from   '+   @table_name   +   '   where   leibie   =   '''+@strsql+'''')  
  GO  
   
  execute   A   @table_name='apd',@strsql='软件与程序设计/VB/'  
  =================================================================  
  //select   *   from   apd   where   leibie   like   '%VB%'  
   
  CREATE   PROCEDURE   B  
  @table_name   varchar(20),@strsql   varchar(200)    
  AS    
  exec('select   *   from   '+   @table_name   +   '   where   leibie   like   ''%'+@strsql+'%''')  
  GO  
   
  execute   B   @table_name='apd',@strsql='VB'  
  ===========================================================================Top

9 楼huntbookren()回复于 2006-05-02 10:36:10 得分 0

我现在主要是找不到什么原因,为什么慢,是sql   查询语句,还是repeater控件绑定慢?Top

10 楼ice_frank(回归......)回复于 2006-05-02 10:41:54 得分 0

repeater控件绑定应该不会慢的Top

11 楼huntbookren()回复于 2006-05-02 14:55:16 得分 0

那么大家有没有关于绑定效率的相关文章和注意事项啊??Top

12 楼gram901105723(刀剑无眼)回复于 2006-05-03 09:56:43 得分 0

还有一种可能是,  
  1。SQL慢,用查询分析器测一下。特别是该table中有计算字段,自增字段,肯定慢的要死,我遇到过  
  2。每个字段都要做强制类型转换的,(楼上的说法)Top

13 楼JavaDianNet(如何做...如何做的更好...)回复于 2006-05-03 12:58:35 得分 0

objCommand.Fill(ds);  
  会将select语句的结果传到客户端,七千条记录还是通过网络从服务器传到你的客户机,分页只是在客户端做的而已  
   
   
  实际上  
   
  sda.Fill(ds   ,   start   ,   stop   ,   "tblname")也是一样,你用"开始"-ms   sql   server-事件探查器  
  跟踪一下就知道了Top

14 楼JavaDianNet(如何做...如何做的更好...)回复于 2006-05-03 13:00:56 得分 0

解决方案:petshop里的simplerepeater都没有完全实现分页,也是客户端做了一下过滤而已.  
   
  顺便做做blog宣传,自己写一个repeater..可参照:  
   
  http://blog.csdn.net/JavaDianNet/Top

15 楼godspell(风似冷)回复于 2006-05-13 11:01:29 得分 0

string   strCommand   =   "select   *   from   "   +   strDatabase;      
   
  OleDbDataAdapter   objCommand=new   OleDbDataAdapter(strCommand,objConn);  
  DataSet   ds=new   DataSet();  
                      objCommand.Fill(ds);  
   
  。。这里你一次性是把全部记录都加到ds里呀。虽然下面有分页,但只是一个页面效果了,在数据加载的时候还是把全部数据一起返回了呀。。  
  试考虑用下面的方法  
  objCommand.Fill(ds,PageSize*(CurrentPageIndex-1),PageSize,"table");  
  这样返回的记录集才是只有你的pagesize而不是所有的6千多数据,而且你的表的结构如何的很重的,对效率的影响很大的,如主键,索引那些。。。  
  Top

16 楼mendel(风逍遥)回复于 2006-05-19 17:52:46 得分 0

同意楼上的,是你的SQL语句有问题,你一次返回了所有的记录,肯定慢了  
  不信你试下Select   Top   4   *   From   tabelnameTop

17 楼ztwz(-_-b(偶要像海绵一样的狂吸水水!))回复于 2006-05-19 17:55:02 得分 0

顶,学习!Top

18 楼jyk(今天由我来写的代码,明天就让程序自己完成!喜欢编程。和气生财。共同提高。共同进步!)回复于 2006-05-19 18:34:42 得分 0

1、六千条不分页当然会慢了  
   
  2、要在后台把数据组合成html代码,都是字符串操作而且还是   六千条   ,呵呵,你想象速度把。这些数据还要从硬盘里读出来。  
  Top

19 楼jyk(今天由我来写的代码,明天就让程序自己完成!喜欢编程。和气生财。共同提高。共同进步!)回复于 2006-05-19 18:35:06 得分 0

http://community.csdn.net/Expert/TopicView3.asp?id=4616896  
   
  另外可以看看,这个帖子。Top

相关问题

关键词

得分解答快速导航

  • 帖主:huntbookren

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo