选择显示字体大小

datalist控件也玩分页


  众所周知,asp.net中给我们提供了三个数据控件--datagrid,repeater,datalist。在这三个控件中,datagrid控件的功能最强大,repeater控件最忠实于模版原样,datalist控件则兼而有之。
  
  datagrid控件太有名了,所以以前用的讲的也很多,repeater功能太少,没有什么好讲的。这里主要是讲一讲datalist控件。
  
  datalist控件其实功能也很强大,他支持选择、编辑,实现的方法也很简单,不过最令人头疼的就是它不像datagrid控件一样内置了分页的功能,这么好的一个控件竟然不能分页!!!
  
  确实是一个很让人头疼的事情。
  
  不过,只是datalist没有提供内置的分页功能,但是并不表示,我们不能使用datalist控件来实现分页,既然它不给我分页功能,那只好自己动手了。
  
  下面是全部原代码,其实用到的方法和php中的分页差不多,只是这里用的是dataadapter与dataset组合,而不是php中的sql语句直接搞定。
  
  (本程序在.net framework beta 2下测试通过)
  
  
  <% @ page language="c#" %>
  <% @ import namespace="system.data" %>
  <% @ import namespace="system.data.oledb" %>
  <script language="c#" runat="server">
  /*
   create by 飞刀
   http://www.aspcn.com
   2001-7-25 01:44
  
   support .net framework beta 2
  */
  oledbconnection myconn;
  int pagesize,recordcount,pagecount,currentpage;
  public void page_load(object src,eventargs e)
  {
   //设定pagesize
   pagesize = 10;
  
   //连接语句
   string myconnstring = "provider=microsoft.jet.oledb.4.0; data source="+server.mappath(".")+"..\\database\\db1.mdb;";
   myconn = new oledbconnection(myconnstring);
   myconn.open();
  
   //第一次请求执行
   if(!page.ispostback)
   {
   listbind();
   currentpage = 0;
   viewstate["pageindex"] = 0;
  
   //计算总共有多少记录
   recordcount = calculaterecord();
   lblrecordcount.text = recordcount.tostring();
  
   //计算总共有多少页
   pagecount = recordcount/pagesize;
   lblpagecount.text = pagecount.tostring();
   viewstate["pagecount"] = pagecount;
   }
  }
  //计算总共有多少条记录
  public int calculaterecord()
  {
   int intcount;
   string strcount = "select count(*) as co from score";
   oledbcommand mycomm = new oledbcommand(strcount,myconn);
   oledbdatareader dr = mycomm.executereader();
   if(dr.read())
   {
   intcount = int32.parse(dr["co"].tostring());
   }
   else
   {
   intcount = 0;
   }
   dr.close();
   return intcount;
  }
  
  icollection createsource()
  {
  
   int startindex;
  
   //设定导入的起终地址
   startindex = currentpage*pagesize;
   string strsel = "select * from score";
   dataset ds = new dataset();
  
   oledbdataadapter myadapter = new oledbdataadapter(strsel,myconn);
   myadapter.fill(ds,startindex,pagesize,"score");
  
   return ds.tables["score"].defaultview;
  }
  public void listbind()
  {
   score.datasource = createsource();
   score.databind();
  
   lbnnextpage.enabled = true;
   lbnprevpage.enabled = true;
   if(currentpage==(pagecount-1)) lbnnextpage.enabled = false;
   if(currentpage==0) lbnprevpage.enabled = false;
   lblcurrentpage.text = (currentpage+1).tostring();
  
  }
  
  public void page_onclick(object sender,commandeventargs e)
  {
   currentpage = (int)viewstate["pageindex"];
   pagecount = (int)viewstate["pagecount"];
  
   string cmd = e.commandname;
   //判断cmd,以判定翻页方向
   switch(cmd)
   {
   case "next":
   if(currentpage<(pagecount-1)) currentpage++;
   break;
   case "prev":
   if(currentpage>0) currentpage--;
   break;
   }
  
   viewstate["pageindex"] = currentpage;
  
   listbind();
  
  }
  </script>
  <html
  <head>
  <title></title>
  </head>
  <body>
  <form runat="server">
  共有<asp:label id="lblrecordcount" forecolor="red" runat="server" />条记录  
  当前为<asp:label id="lblcurrentpage" forecolor="red" runat="server" />/<asp:label id="lblpagecount" forecolor="red" runat="server" />页  
  
  <asp:datalist id="score" runat="server"
  headerstyle-backcolor="#aaaadd"
  alternatingitemstyle-backcolor="gainsboro"
  edititemstyle-backcolor="yellow"
  >
   <itemtemplate>
   姓名:<%# databinder.eval(container.dataitem,"name") %>
   <asp:linkbutton id="btnselect" text="编辑" commandname="edit" runat="server" />
   </itemtemplate>
  </asp:datalist>
  <asp:linkbutton id="lbnprevpage" text="上一页" commandname="prev" oncommand="page_onclick" runat="server" />
  <asp:linkbutton id="lbnnextpage" text="下一页" commandname="next" oncommand="page_onclick" runat="server" />
  
  </form>
  </body>
  </html
  
  大家在写程序时,最重要的是自己去动脑去想,决对不是一出现问题去哪去问。问题太简单了,还没有人愿意回答。
  
  多多思考,多多查资料,才是真正有收获的。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons