在DBHelper中添加下面代码 查询有多少条数据
public static int Scalar ( string sql)
{
conn. Open ( ) ;
SqlCommand comm = new SqlCommand ( sql, conn) ;
int num = ( int ) comm. ExecuteScalar ( ) ;
conn. Close ( ) ;
return num;
}
在DAL中添加方法
public static DataTable GetFoodsByPage ( int pageIndex, int pageSize, string condition= "1=1" )
{
string sql = $"select top { pageSize } * from food where { condition } and foodid not in (select top { ( pageIndex - 1 ) * pageSize} foodid from food where { condition } order by foodid)" ;
return DBHelper. GetData ( sql) ;
}
public static int GetFoodByCount ( )
{
string sql = "select count(*) from food" ;
return DBHelper. Scalar ( sql) ;
}
在BLL中添加方法
public static List< Food> GetFoodsByPage ( int pageIndex, int pageSize, string condition = "1=1" )
{
DataTable dt = FoodDAL. GetFoodsByPage ( pageIndex, pageSize, condition) ;
List< Food> list = new List< Food> ( ) ;
foreach ( DataRow dr in dt. Rows)
{
Food food = new Food ( ) ;
food. FoodID = int . Parse ( dr[ "FoodID" ] . ToString ( ) ) ;
food. FoodName = dr[ "FoodName" ] . ToString ( ) ;
food. FoodTypeID = int . Parse ( dr[ "FoodTypeID" ] . ToString ( ) ) ;
food. Price = decimal . Parse ( dr[ "Price" ] . ToString ( ) ) ;
food. PicUrl = dr[ "PicUrl" ] . ToString ( ) ;
food. SalesVolume = int . Parse ( dr[ "SalesVolume" ] . ToString ( ) ) ;
food. AddDate = DateTime. Parse ( dr[ "AddDate" ] . ToString ( ) ) ;
food. Desc = dr[ "Desc" ] . ToString ( ) ;
list. Add ( food) ;
}
return list;
}
public static int GetFoodByCount ( )
{
return FoodDAL. GetFoodByCount ( ) ;
}
创建类记录所有的分页操作:
[ Serializable ]
public class PubPager
{
public int PageIndex { get ; set ; }
public int PageSize { get ; set ; }
public int PageCount { get ; set ; }
private int count;
public int Count
{
get { return count; }
set
{
this . PageCount = Convert. ToInt32 ( Math. Ceiling ( double . Parse ( value . ToString ( ) ) / double . Parse ( PageSize. ToString ( ) ) ) ) ;
this . count = value ;
}
}
public PubPager ( )
{
PageSize = 10 ;
PageIndex = 1 ;
Count = 0 ;
}
public bool CheckFirst ( )
{
return this . PageIndex - 1 <= 1 ;
}
public bool CheckLast ( )
{
return this . PageIndex + 1 >= this . PageCount;
}
public void GoPrevPage ( )
{
if ( this . CheckFirst ( ) )
this . PageIndex = 1 ;
else
this . PageIndex-- ;
}
public void GoNextPage ( )
{
if ( this . CheckLast ( ) )
this . PageIndex = this . PageCount;
else
this . PageIndex++ ;
}
public void GoFirstPage ( )
{
this . PageIndex = 1 ;
}
public void GoLastPage ( )
{
this . PageIndex = this . PageCount ;
}
在Repeater控件的前端代码中添加
< asp: Label ID = " labMessage" runat = " server" Text = " Label" > </ asp: Label>
< asp: LinkButton ID = " lbFirst" runat = " server" OnClick = " lbFirst_Click " > 首页</ asp: LinkButton>
< asp: LinkButton ID = " lbPrev" runat = " server" OnClick = " lbPrev_Click " > 上一页</ asp: LinkButton>
< asp: LinkButton ID = " lbNext" runat = " server" OnClick = " lbNext_Click " > 下一页</ asp: LinkButton>
< asp: LinkButton ID = " lbLast" runat = " server" OnClick = " lbLast_Click " > 尾页</ asp: LinkButton>
后端代码中添加:
PubPager pager;
protected void Page_Load ( object sender, EventArgs e)
{
if ( ! IsPostBack)
{
pager = new PubPager ( ) ;
ViewState[ "page" ] = pager;
DataBinder ( pager) ;
}
pager = ViewState[ "page" ] as PubPager ;
}
private void DataBinder ( PubPager pager)
{
string condition = "1=1" ;
pager. Count = FoodBLL. GetFoodByCount ( ) ;
labMessage. Text = $"共 { pager. Count } 条数据; 每页 { pager. PageSize } 条.第 { pager. PageIndex } 页/共 { pager. PageCount } 页" ;
rep. DataSource = FoodBLL. GetFoodsByPage ( pager. PageIndex, pager. PageSize, condition) ;
rep. DataBind ( ) ;
}
protected void btnSreach_Click ( object sender, EventArgs e)
{
string foodName = txtFoodName. Text;
rep. DataSource = FoodBLL. GetFoodByName ( foodName) ;
rep. DataBind ( ) ;
}
protected void lbFirst_Click ( object sender, EventArgs e)
{
pager. GoFirstPage ( ) ;
DataBinder ( pager) ;
}
protected void lbPrev_Click ( object sender, EventArgs e)
{
pager. GoPrevPage ( ) ;
DataBinder ( pager) ;
}
protected void lbNext_Click ( object sender, EventArgs e)
{
pager. GoNextPage ( ) ;
DataBinder ( pager) ;
}
protected void lbLast_Click ( object sender, EventArgs e)
{
pager. GoLastPage ( ) ;
DataBinder ( pager) ;
}