ASP教程之让DataList也能分页
源代码保护方面其实现在考虑得没那么多了..NET也可以反编译.ASP写得复杂的话别人能看得懂的话.他也有能力自己写了.这方面担心的倒不太多.纵观现在网上可以下载的那些所谓BBS还有什么网站等等的源代码分页尽人皆知,ASP.Net中给我们供应了三个数据控件--DataGrid,Repeater,DataList。在这三个控件中,DataGrid控件的功效最壮大,Repeater控件最忠厚于模版原样,DataList控件则兼而有之。DataGrid控件太着名了,以是之前用的讲的也良多,Repeater功效太少,没有甚么好讲的。这里次要是讲一讲DataList控件。
DataList控件实在功效也很壮大,他撑持选择、编纂,完成的办法也很复杂,不外最使人头疼的就是它不像DataGrid控件一样内置了分页的功效,这么好的一个控件居然不克不及分页!!!
的确是一个很让人头疼的事变。
不外,只是DataList没有供应内置的分页功效,可是其实不暗示,我们不克不及利用DataList控件来完成分页,既然它不给我分页功效,那只好本人下手了。
上面是全体原代码,实在用到的办法和PHP中的分页差未几,只是这里用的是DataAdapter与DataSet组合,而不是PHP中的SQL语句间接弄定。
<%@PageLanguage="C#"%>
<%@ImportNamespace="System.Data"%>
<%@ImportNamespace="System.Data.OleDb"%>
<SCRIPTlanguage=C#Runat="Server">
/*
CreateBy飞刀
http://www.aspcn.com
2001-7-2501:44
Support.NetFrameworkBeta2
DataList只要一个数据列,能够有多个按钮列
*/
OleDbConnectionMyConn;
intPageSize,RecordCount,PageCount,CurrentPage;
publicvoidPage_Load(Objectsrc,EventArgse)
{
//设定PageSize
PageSize=3;
//毗连语句
stringMyConnString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+Server.MapPath(".")+"..imagesdb1.mdb;";
MyConn=newOleDbConnection(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;
}
}
//盘算统共有几笔记录
publicintCalculateRecord()
{
intintCount;
stringstrCount="selectcount(*)ascofromScore";
OleDbCommandMyComm=newOleDbCommand(strCount,MyConn);
OleDbDataReaderdr=MyComm.ExecuteReader();
if(dr.Read())
{
intCount=Int32.Parse(dr["co"].ToString());
}
else
{
intCount=0;
}
dr.Close();
returnintCount;
}
ICollectionCreateSource()
{
intStartIndex;
//设定导进的起终地点
StartIndex=CurrentPage*PageSize;
stringstrSel="select*fromScore";
DataSetds=newDataSet();
OleDbDataAdapterMyAdapter=newOleDbDataAdapter(strSel,MyConn);
MyAdapter.Fill(ds,StartIndex,PageSize,"Score");
returnds.Tables["Score"].DefaultView;
}
publicvoidListBind()
{
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();
}
publicvoidPage_OnClick(Objectsender,CommandEventArgse)
{
CurrentPage=(int)ViewState["PageIndex"];
PageCount=(int)ViewState["PageCount"];
stringcmd=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>
<FORMid=Form1runat="server">
共有<asp:Labelid=lblRecordCountrunat="server"ForeColor="red"></asp:Label>笔记录
以后为<asp:Labelid=lblCurrentPagerunat="server"ForeColor="red"></asp:Label>/<asp:Labelid=lblPageCountrunat="server"ForeColor="red"></asp:Label>页
<asp:DataListid=scorerunat="server"EditItemStyle-BackColor="yellow"AlternatingItemStyle-BackColor="Gainsboro"HeaderStyle-BackColor="#aaaadd">
<ITEMTEMPLATE>
<%#DataBinder.Eval(Container.DataItem,"dcid")%><%#DataBinder.Eval(Container.DataItem,"title")%>
<asp:LinkButtonid=Linkbutton1runat="server"CommandName="edit"Text="傻瓜"></asp:LinkButton>
<asp:LinkButtonid=btnSelectrunat="server"CommandName="</p>对用户来说可预见费用、节约费用,可以做到花少钱办大事。由于省去了购买软件和硬件等的前期费用,用户可以租用较高级的应用软件。ASP的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。 Session:这个存储跟客户端会话过程的数据,默认20分钟失效 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: 如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。 那么,ASP.Net有哪些改进呢? 从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了 我想问如何掌握学习节奏(先学什么再学什么)最好详细点? Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名") 不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
页:
[1]