1.首先在數據庫中建立一個視圖(在aspx中sql查詢語句是view_student不是student),在視圖里創建
create view view_student--創建視圖
as row_number 行號 一條數據是一行 分頁功能要根據行數運算
select *,row_number() over(order by stuNo desc) as rowindex from Student
創建一個名為rowindex的字段,row_number() 函數是返回行號,要與over連用
2.在項目中創建一個studentlist.aspx.repeateList控件用戶重復的數據簡單化,
-----------在studentList.aspx 中的代碼
<table>
<tr>
<td>序號</td>
<td>學號</td>
<td>姓名</td>
<td>性別</td>
<td>年齡</td>
<td>操作</td>
</tr>
<asp:Repeater ID="rptStudent" runat="server">
<ItemTemplate>Repeater如果是一個表格,那么它就有多個行組成的,而它的每一行顯示的數據,就是由ItemTemplate控制的
<tr>
<td><%#Eval("rowindex")%></td>--------------<%#Eval("字段")%>用于綁定數據
<td><%#Eval("stuNo")%></td>
<td><%#Eval("stuName")%></td>
<td><%#Eval("sex")%></td>
<td><%#Eval("birthday")%></td>
<td>操作</td>
</tr>
</ItemTemple>
</asp:Repeater>
</table>
--------------------在studentList.aspx.cs 中的代碼
在直觀的瀏覽器中分頁要理解的是多少頁,一頁有多少行(pageindex,pagesize)pageindex當前頁碼pagesize當前頁碼有幾條數據
如何將數據庫中幾百萬的數據引進來,分開要用什么方法,
在dal層中定義方法-----------------------------------------------------------------------------------
public int GetRecordCount()//獲取學生總數,方便用于分多少頁,一頁包括多少數據,方便計算
{
string sql="select count(*) from Student";
return (int)Sqlhelper.GetSingleData(sql);
}
public DataSet GetPageindexData(int pageindex,int pagesize)將總數分成幾頁,一頁幾條數據,數據成“團”出現,用set返回
{
從view_Student中獲取數據
string sql="select * from view_Student where rowindex between @startrowindex and @endrowindex";
sqlparameter[] sps={
new sqlparameter("@starrowindex",(pageindex-1)*pagesize+1),
new sqlparameter("@endrowindex",pageindex*pagesize)
};
return sqlhelper.Getdataset(sql,sps);
}
在DAL中定義方法,在BLL中調用一下方法
-------------在BLL中定義一下方法
public int GetRecordCount()
{
return stuDal.GetRecordCount(); 要現在DAl中實例化一下Student,才可以調用一下stuDal.GetRecordCount();
}
public DataSet GetPageindexData(int pageindex, int pagesize)
{
return stuDal.GetPageindexData(pageindex,pagesize);
}
---------------------------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bindRepeater(1,3);//(a,b)a代表第幾頁,b代表有幾個數據
}
}
public void bindRepeater(int pageindex,int pagesize)
{
Student stubll=new Student();
rptStudent.DataSource =stubll.GetpageindexData(pageindex, pagesize);控件的數據來源
rptstudent.DataBind();綁定數據
}
----------------------------
create view_student create view View_Student as select *,Row_Number(),over(order by StuNo desc) as rowindex from Student
as
select *,Row_Number(), over() as rowindex from student
--------------------------------------------------------------------------------------------------
將出生日期裝換成年齡
public static GetAge(object birthday)//需要傳參數
{
int NowYear=DateTime.Now.year;
int OldYear=((DateTime)birthday).Year;
return (NoweYear-OldYear).ToString();
}
在.aspx 的頁面綁定數據的頁面<td><%#GetAge(Eval("birthday"))%></td>這樣調用方法,把數據綁定上面
---------------------------------------------------------------------------------------------------------
上下頁 需要考慮的是 一共多少數據,每個頁面存放多少數據,
當pageindex<=1時,builder.Append(" 首頁 下一頁");
else
builder.Append(<a href='href="StudentList.aspx?pindex=1"'>首頁</a>);變成超鏈接
builder.Append(<a href='href="StudentList.aspx?pindex='"+(pindex-1)+"'"'>上一頁頁</a>);變成超鏈接
當pageindex=pageCount時
if(pageindex==pageCount)
{
builder.Append(" 下一頁 末頁");
}
else
{
builder.Append("<a href='StudentList.aspx?pindex=" + (pageindex + 1) + "'>下一頁</a>");
builder.Append("<a href='StudentList.aspx?pindex="+pageCount+"'>末頁<a/>");
}
!!----------!!! Pager = builder.ToString();
<%=%> 里面放的變量名 <p>Welcome to Beginning ASP.NET 3.5 on <%= DateTime.Now.ToString() %></p>
Welcome to Beginning ASP.NET 3.5 on 2009-11-10 15:53:08
<%#%> 這里是數據的綁定 只能用在數據綁定控件中
----------------------------------------------------------------------------------------------------------
public string GetPager(ref int pageindex, int pagecount)
{
if (pageindex < 1)//如果頁碼<1,則當前頁碼為第一頁
{
pageindex = 1;
}
if (pageindex > pagecount)
{
pageindex = pagecount;
}
StringBuilder sb = new StringBuilder();
if (pageindex == 1)
{
sb.Append(" 首頁 上頁");
}
else
{
sb.Append(" <a href='javascript:LoatData(1)'>首頁</a>");
sb.Append(" <a href='javascript:LoatData(" + (pageindex - 1) + ")'>上頁</a>");
}
if (pageindex == pagecount)
{
sb.Append(" 下頁 末頁 ");
}
else
{
sb.Append(" <a href='javascript:LoatData(" + (pageindex + 1) + ")'>下頁</a> ");
//sb.Append(" <a herf='javascript:LoatData(" + (pagecount) + ")'>末頁</a>");
sb.Append(" <a href='javascript:LoatData(" + (pagecount) + ")'>末頁</a>");
}
return sb.ToString();
}
?


<div class="page_nav"> <%=Pager%> </div>public string Pager { set; get; }int RecordCount, PageCount, PageSize, PageIndex;protected void Page_Load(object sender, EventArgs e){//先獲數據庫里取有多少條數據RecordCount = ProductBLL.GetRecordCount();PageSize = 2;PageCount=(int)Math.Ceiling(RecordCount*1.0/PageSize);PageIndex =1;//定義開始從第一頁開始if (!string.IsNullOrEmpty(Request["pindex"])){ PageIndex=Convert.ToInt32(Request["pindex"]);}if (!IsPostBack){//下方注釋不能刪除//ProductList = ProductBLL.GetProduct();//Repeater1.DataSource = ProductBLL.GetProduct();//Repeater1.DataBind();ViewState["pindex"] = PageIndex;DataTable dt = Binder(PageIndex,PageSize);Repeater1.DataSource = dt;Repeater1.DataBind();GetPager(PageIndex, PageCount);}}public void GetPager(int pageindex, int pagesize){if (pageindex < 1){ PageIndex=1;}if (pageindex > PageCount){pageindex = PageCount;}StringBuilder sb = new StringBuilder();if (pageindex < 1){sb.Append("首頁~~~上一頁");}else{sb.Append("<a href='?pindex=1'>首頁~~~</a>");sb.Append("<a href='Product.aspx?index="+(pageindex-1)+"'>上一頁</a>");}if (pageindex == PageCount){sb.Append("~~~下一頁 末頁");}else{sb.Append("<a href='Product.aspx?pindex=" + (pageindex + 1) + "'>~~~下一頁~~~</a>");sb.Append("<a href='?pindex="+PageCount+"'>末頁</a>");}Pager = sb.ToString();}
?