【法一】2015.8.9html
aspx界面:后端
<body>spa
<asp:Repeater ID="Repeater1" runat="server">orm
<div>server
<HeaderTemplate>htm
<ul>ip
</HeaderTemplate>ci
<ItemTemplate>input
<li><%#Eval("Name")%>(<%#("Price")%>)</li>it
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</div>
后端代码:
private MyDBDataContext_Context=new MyDBDataContext();
private const int PAGESIZE=3;
public List<Car>GetPagedCar(int pageNO)
{
var query=_Context.Car.Skip(PAGESIZE*(pageNO-1)).Take(PAGESIZE);
return query.ToList();
}
public int GetPageCount()
{
int rowsCount=_Context.Car.Count;//得到总行数
int pageCount=(int)Math.Ceiling(1.0*(rowsCount/PAGESIZE));//计算总页数
return pageCount;
}
protected void Page_Load(object sender,EventArgs e)
{
int nowPage=1;//页数从1开始
if(Request["pageno"]!=null)
{
nowPage=Convert.ToInt32(Request["pageno"]);
}
List<Car>list=GetPagedCar(nowPage);
---List<Car>list=GetPagedCar(1);显示第一页数据List<Car>list=GetPagedCar(2);显示第二页数据
//给Repeater数据
Repeater1.DataSourse=list;
Repeater1.DataBind();
//给上一页、下一页数据---加入超连接HyperLink实现翻页功能
int pageCount=GetPageCount();
//控制下一页连接
if(pageCount==nowPage)
{
linkNext.Enabled=false;
}
else
{
linkNext.Enabled=true;
linkNext.NavigateUrl="Default.aspx?pageno="+(nowPage+1).ToString();
}
//控制上一页连接
if(nowPage==1)
{
linkPrev.Enabled=false;
}
else
{
linkPrev.Enabled=true;
linkPrev.NavigateUrl="Default.aspx?pageno="+(nowPage-1).ToString();---注意:pageno等号先后不能加空格
}
//控制首页连接
linkFirst.NavigateUrl="Default.aspx?pageno=1"
//控制尾页连接
linkLast.NavigateUrl="Default.aspx?pageno="+pageCount;
}
//跳转到某一页
protected btnGo_Click(object sender,EventArgs e)
{
int goNo=Convert.ToInt32(txtPageNo.Text);
if(goNo<1)
{
Response.Redirect("Default.aspx")
}
else if(goNo<GetPageCount())
{
Response.Redirect("Default.aspx?pageno="+GetPageCount());
}
else
{
Response.Redirect("Default.aspx?pageno="+goNo);
}
}
【法二】2015.8.18
part1---不加标注
aspx代码:
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate><ul></HeaderTemplate>
<FooterTemplate></ul></FooterTemplate>
<ItemTemplate>
<li><%# Eval("Name") %></li>
</ItemTemplate>
</asp:Repeater>
</div>
<a href="Default.aspx" runat="server" id="lnkPrev">
<input id="Button1" type="button" value="上一页" /></a>
<a href="Default.aspx" runat="server" id="lnkNext">
<input id="Button2" type="button" value="下一页" /></a>
</form>
</body>
VS代码:
public partial class _Default : System.Web.UI.Page
{
private MyDBDataContext _Context = new MyDBDataContext();
private const int PAGESIZE = 3;
private int _PageNo = 1; //当前的页号
//获取总页数
public int GetPageCount()
{
//取总行数
int rowsCount = _Context.Car.Count();
//算出总页数
int pageCount = (int)Math.Ceiling( 1.0*rowsCount / PAGESIZE);
return pageCount;
}
public List<Car> GetPagedCar()
{
var query = _Context.Car.Skip(PAGESIZE*(_PageNo-1)).Take(PAGESIZE);
return query.ToList();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request["pn"] != null)
{
_PageNo = Convert.ToInt32(Request["pn"]);
}
Repeater1.DataSource = GetPagedCar();
Repeater1.DataBind();
if (_PageNo == 1)
{
lnkPrev.HRef = "Default.aspx?pn=1";
}
else
{
lnkPrev.HRef = "Default.aspx?pn=" + (_PageNo - 1).ToString();
}
if (_PageNo == GetPageCount())
{
lnkNext.HRef = "Default.aspx?pn=" + GetPageCount().ToString();
}
else
{
lnkNext.HRef = "Default.aspx?pn=" + (_PageNo + 1).ToString();
}
}
}
}
part2---加标注
aspx代码:
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate><ul></HeaderTemplate>
<FooterTemplate></ul></FooterTemplate>
<ItemTemplate>
<li><%# Eval("Name") %></li>
</ItemTemplate>
</asp:Repeater>
</div>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上一页" />
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="下一页" />
<asp:DropDownList ID="PageList" runat="server" AutoPostBack="True" OnSelectedIndexChanged="PageList_SelectedIndexChanged">
</asp:DropDownList>
一共<asp:Label ID="lblAll" runat="server" Font-Bold="True" ForeColor="Red"></asp:Label>
页,当前是第<asp:Label ID="lblNow" runat="server" Font-Bold="True" ForeColor="Red"></asp:Label>
页</form>
</body>
VS代码:
public partial class Default2 : System.Web.UI.Page
{
private MyDBDataContext _Context = new MyDBDataContext();
private const int PAGESIZE = 3;
private int _PageNo = 1; //当前的页号
//获取总页数
public int GetPageCount()
{
//取总行数
int rowsCount = _Context.Car.Count();
//算出总页数
int pageCount = (int)Math.Ceiling(1.0 * rowsCount / PAGESIZE);
return pageCount;
}
public List<Car> GetPagedCar()
{
_PageNo = Convert.ToInt32( PageList.SelectedValue);
var query = _Context.Car.Skip(PAGESIZE * (_PageNo - 1)).Take(PAGESIZE);
return query.ToList();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillPageList();
ShowCars();
}
}
private void ShowCars()
{
Repeater1.DataSource = GetPagedCar();
Repeater1.DataBind();
//给当前页和一共几页赋值
lblNow.Text = PageList.SelectedValue;
lblAll.Text = PageList.Items.Count.ToString();
}
private void FillPageList()
{
PageList.Items.Clear();
int pageCount = GetPageCount();
for (int i = 1; i <= pageCount; i++)
{
ListItem li = new ListItem(i.ToString(), i.ToString());
PageList.Items.Add(li);
}
}
protected void PageList_SelectedIndexChanged(object sender, EventArgs e)
{
ShowCars();
}
protected void Button1_Click(object sender, EventArgs e)
{
if (PageList.SelectedIndex == 0)
{
return;
}
PageList.SelectedIndex--;
ShowCars();
}
protected void Button2_Click(object sender, EventArgs e)
{
if (PageList.SelectedIndex == GetPageCount() - 1)
{
return;
}
PageList.SelectedIndex++;
ShowCars();
}
}
2015.9.9
汽车表信息分页
【Home控制器代码】---添加引用using MvcApplication1.Models;
namespace MvcApplication1.Controllers
{
public class HomeController : Controller
{
private const int PAGESIZE = 5;
public ActionResult Index(int? id)
{
if (id == null)
{
id = 1;
}
List<Car> list = new CarBF().Select(PAGESIZE,id.Value);//获取当前页数据(id表明当前页页号)
int pageCount = new CarBF().GetPageCount(PAGESIZE);//获取总页数
int nextPageNo = id.Value>pageCount?pageCount:id.Value + 1;//计算下一页页号
int prevPageNo = id.Value==1?1:id.Value - 1;//计算上一页页号
//使用ViewBag带到视图层去
ViewBag.NextPageNo = nextPageNo;
ViewBag.PrevPageNo = prevPageNo;
ViewBag.PageCount = pageCount;//总页数
ViewBag.PageNo = id;//当前页号
//下拉列表分页---下拉列表按钮代码
List<int> listPage = new List<int>();
for (int i = 1; i <= pageCount; i++)
{
listPage.Add(i);
}
SelectList pageList = new SelectList(listPage,id);
ViewBag.PageList = pageList;
return View(list);
}
}
}
【CarBF代码】
namespace MvcApplication1.Models
{
public class CarBF
{
private MyDBDataContext_Context=new MyDBDataContext();
//获取总页数
public int GetPageCount(int pageSize)
{
int rowsCount = _Context.Car.Count();
int pageCount = (int)Math.Ceiling(1.0*(rowsCount/pageSize));
return pageCount;
}
//获取指定页数据
public List<Car> Select(int pageSize,int pageNo)
{
var query=_Context.Car.Skip(pageSize*(pageNo-1)).Take(pageSize);
return query.ToList();
}
}
}
【Index视图源】
@using MvcApplication1.Models;
@model List<Car>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width">
<title>Index</title>
</head>
<body>
<h1>分页</h1>
<table border="0" width="100%" cellpadding="5" cellspacing="1" bgcolor="navy">
<tr style="color:white;text-align:center;font-weight:bold">
<td>代号</td>
<td>车型</td>
<td>系列</td>
<td>厂商</td>
<td>价格</td>
</tr>
@{
foreach(Car data in Model)
{
<tr bgcolor="white">
<td>@data.Code</td>
<td>@data.Name</td>
<td>@data.Brand1.Brand_Name</td>
<td>@data.Brand1.Productor.Prod_Name</td>
<td>@data.Price</td>
</tr>
}
}
</table>
@{
int nowPageNo = (int)ViewBag.PageNo;
int nextPageNo = (int)ViewBag.PageNo + 1;
if(nowPageNo==new CarBF().GetPageCount(5))
{
nextPageNo = nowPageNo;
}
int prevPageNo = (int)ViewBag.PageNo - 1;
if(nowPageNo==1)
{
prevPageNo = 1;
}
}
@Html.ActionLink("首页","Index","Home","new{id=1}")
@Html.ActionLink("下一页","Index","Home","{id=(int)ViewBag.NextPageNo}",null)
@Html.ActionLink("上一页","Index","Home","{id=(int)ViewBag.PrevPageNo}",null)
@Html.ActionLink("尾页","Index","Home","new{id=(int)ViewBag.PageCount")
<div style="display:inline-block">
@using(Html.BeginForm("Index","Home"))
{
@:转第@Html.TextBox("id",null,new{size=2})页<input type="submit" value="GO"/>---加GO转页按钮
}
</div> 一共@ViewBag.PageCount页,当前是第@ViewBag.PageNo页---常见页数显示
</body>
【转页部分还可写成】
<div style="display:inline-block">
@using(Html.BeginForm("Index","Home"))
{
@:转第@Html.DropDownList("id",(SelectList)ViewBag.PageList)页<input type="submit" value="GO"/>---加GO转页按钮
}
</div>
或者
<div style="display:inline-block">
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new {id="form2"}))
{
@:转第@Html.DropDownList("id",(SelectList)ViewBag.PageList,new{onchange="form2.submit()"})页<input type="submit" value="GO"/>---加GO转页按钮
}
</div>
或者
<div style="display:inline-block">@using (Html.BeginForm("Index", "Home", FormMethod.Post, new {id="form2"})){ @:转第@Html.DropDownList("id",(SelectList)ViewBag.PageList,new{})页<span onclick="form2.submit()"></span>}</div>