【ASP.NET】datalist、repeater+PagedDataSource分页翻页
1,datalist可以使用html中table元素标签随意展示和控制数据在列表项中显示。
★单击普通项中imagebutton,改变对应普通项的背景色(可以互斥)
在datalist的项命令ItemCommand事件中写代码:
int index=e.Item.ItemIndex; //获取单击项索引
dl1.Items[index].BackColor=System.Drawing.Color.Red; //更改对应项的背景色
2,repeater不提供任何布局内容,但可以使用无序或有序列表,把<ul>或<ol>标签及其元素要写完整。
并且用于RSS基于XML格式,不能在其中出现html标签包括<、>之类的都会引发异常。
3,PagedDataSource+datalist实现分页翻页
其实就是指定PagedDataSource的几个属性
PagedDataSource pdsroomtype = new PagedDataSource();//创建PagedDataSource实例
pdsroomtype.AllowPaging = true; //允许分页
pdsroomtype.PageSize = 1; //每页记录数
pdsroomtype.CurrentPageIndex = Convert.ToInt32(ViewState["currentpageindex"]);//首页从0开始
pdsroomtype.DataSource = GetRoomType();//指定PagedDataSource数据源为数据泛型
dl1.DataSource = pdsroomtype;//绑定数据展示控件的数据源为PagedDataSource实例
dl1.DataBind();
enable(pdsroomtype);//设置翻页按钮状态
return pdsroomtype.PageCount;//返回总页数
翻页
pdsroomtype.CurrentPageIndex = Convert.ToInt32(ViewState["currentpageindex"])+1;
或
pdsroomtype.CurrentPageIndex = Convert.ToInt32(ViewState["currentpageindex"])-1;
首页
pdsroomtype.CurrentPageIndex =0;
尾页
pdsroomtype.CurrentPageIndex = 总页数-1;
PagedDataSource实现分页只能用于数据行在万行以内,而且效率低下。一般用拼装sql语句分页,或者用基于此原理的第三方控件ASPNetPager分页,将在下一篇文章中详细讲解。
本人写的PagedDataSource+datalist分页源代码如下,供大家参考:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Collections.Generic;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ViewState["currentpageindex"] = 0;
bangding();
}
}
//分页绑定PagedDataSource
public int bangding()
{
PagedDataSource pdsroomtype = new PagedDataSource();//创建PagedDataSource实例
pdsroomtype.AllowPaging = true; //允许分页
pdsroomtype.PageSize = 1; //每页记录数
pdsroomtype.CurrentPageIndex = Convert.ToInt32(ViewState["currentpageindex"]);//首页从0开始
pdsroomtype.DataSource = GetRoomType();//指定PagedDataSource数据源为数据泛型
dl1.DataSource = pdsroomtype;//绑定数据展示控件的数据源为PagedDataSource实例
dl1.DataBind();
enable(pdsroomtype);//设置翻页按钮状态
return pdsroomtype.PageCount;//返回总页数
}
List<RoomType> GetRoomType()
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=.;Initial Catalog=HotelManage;Integrated Security=True";
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "select * from roomtype";
List<RoomType> list = new List<RoomType>();
con.Open();
SqlDataReader read = cmd.ExecuteReader();
while (read.Read())
{
RoomType roomtype = new RoomType();
roomtype.TypeID = (int)read["typeid"];
list.Add(roomtype);
}
read.Close();
con.Close();
return list;
}
//单击普通项imagebutton更改对应项的背景色
protected void dl1_ItemCommand(object source, DataListCommandEventArgs e)
{
int index = e.Item.ItemIndex;
dl1.Items[index].BackColor = System.Drawing.Color.Red;
}
//向后翻页
protected void btnnext_Click(object sender, EventArgs e)
{
ViewState["currentpageindex"] = Convert.ToInt32(ViewState["currentpageindex"]) + 1;
bangding();
}
//向前翻页
protected void btnpre_Click(object sender, EventArgs e)
{
ViewState["currentpageindex"] = Convert.ToInt32(ViewState["currentpageindex"]) - 1;
bangding();
}
//跳转到尾页
protected void btnlast_Click(object sender, EventArgs e)
{
ViewState["currentpageindex"] = bangding() - 1;//尾页为总页数减1
bangding();
}
//跳转到首页
protected void btnfirst_Click(object sender, EventArgs e)
{
ViewState["currentpageindex"] = 0;
bangding();
}
//设置翻页按钮是否可用
public void enable(PagedDataSource pds)
{
btnfirst.Enabled = true;
btnpre.Enabled = true;
btnnext.Enabled = true;
btnlast.Enabled = true;
if (pds.IsFirstPage)//首页按钮状态
{
btnfirst.Enabled = false;
btnpre.Enabled = false;
} if (pds.IsLastPage)//尾页按钮状态
{
btnnext.Enabled = false;
btnlast.Enabled = false;
}
}
}
★单击普通项中imagebutton,改变对应普通项的背景色(可以互斥)
在datalist的项命令ItemCommand事件中写代码:
int index=e.Item.ItemIndex; //获取单击项索引
dl1.Items[index].BackColor=System.Drawing.Color.Red; //更改对应项的背景色
2,repeater不提供任何布局内容,但可以使用无序或有序列表,把<ul>或<ol>标签及其元素要写完整。
并且用于RSS基于XML格式,不能在其中出现html标签包括<、>之类的都会引发异常。
3,PagedDataSource+datalist实现分页翻页
其实就是指定PagedDataSource的几个属性
PagedDataSource pdsroomtype = new PagedDataSource();//创建PagedDataSource实例
pdsroomtype.AllowPaging = true; //允许分页
pdsroomtype.PageSize = 1; //每页记录数
pdsroomtype.CurrentPageIndex = Convert.ToInt32(ViewState["currentpageindex"]);//首页从0开始
pdsroomtype.DataSource = GetRoomType();//指定PagedDataSource数据源为数据泛型
dl1.DataSource = pdsroomtype;//绑定数据展示控件的数据源为PagedDataSource实例
dl1.DataBind();
enable(pdsroomtype);//设置翻页按钮状态
return pdsroomtype.PageCount;//返回总页数
翻页
pdsroomtype.CurrentPageIndex = Convert.ToInt32(ViewState["currentpageindex"])+1;
或
pdsroomtype.CurrentPageIndex = Convert.ToInt32(ViewState["currentpageindex"])-1;
首页
pdsroomtype.CurrentPageIndex =0;
尾页
pdsroomtype.CurrentPageIndex = 总页数-1;
PagedDataSource实现分页只能用于数据行在万行以内,而且效率低下。一般用拼装sql语句分页,或者用基于此原理的第三方控件ASPNetPager分页,将在下一篇文章中详细讲解。
本人写的PagedDataSource+datalist分页源代码如下,供大家参考:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Collections.Generic;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ViewState["currentpageindex"] = 0;
bangding();
}
}
//分页绑定PagedDataSource
public int bangding()
{
PagedDataSource pdsroomtype = new PagedDataSource();//创建PagedDataSource实例
pdsroomtype.AllowPaging = true; //允许分页
pdsroomtype.PageSize = 1; //每页记录数
pdsroomtype.CurrentPageIndex = Convert.ToInt32(ViewState["currentpageindex"]);//首页从0开始
pdsroomtype.DataSource = GetRoomType();//指定PagedDataSource数据源为数据泛型
dl1.DataSource = pdsroomtype;//绑定数据展示控件的数据源为PagedDataSource实例
dl1.DataBind();
enable(pdsroomtype);//设置翻页按钮状态
return pdsroomtype.PageCount;//返回总页数
}
List<RoomType> GetRoomType()
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=.;Initial Catalog=HotelManage;Integrated Security=True";
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "select * from roomtype";
List<RoomType> list = new List<RoomType>();
con.Open();
SqlDataReader read = cmd.ExecuteReader();
while (read.Read())
{
RoomType roomtype = new RoomType();
roomtype.TypeID = (int)read["typeid"];
list.Add(roomtype);
}
read.Close();
con.Close();
return list;
}
//单击普通项imagebutton更改对应项的背景色
protected void dl1_ItemCommand(object source, DataListCommandEventArgs e)
{
int index = e.Item.ItemIndex;
dl1.Items[index].BackColor = System.Drawing.Color.Red;
}
//向后翻页
protected void btnnext_Click(object sender, EventArgs e)
{
ViewState["currentpageindex"] = Convert.ToInt32(ViewState["currentpageindex"]) + 1;
bangding();
}
//向前翻页
protected void btnpre_Click(object sender, EventArgs e)
{
ViewState["currentpageindex"] = Convert.ToInt32(ViewState["currentpageindex"]) - 1;
bangding();
}
//跳转到尾页
protected void btnlast_Click(object sender, EventArgs e)
{
ViewState["currentpageindex"] = bangding() - 1;//尾页为总页数减1
bangding();
}
//跳转到首页
protected void btnfirst_Click(object sender, EventArgs e)
{
ViewState["currentpageindex"] = 0;
bangding();
}
//设置翻页按钮是否可用
public void enable(PagedDataSource pds)
{
btnfirst.Enabled = true;
btnpre.Enabled = true;
btnnext.Enabled = true;
btnlast.Enabled = true;
if (pds.IsFirstPage)//首页按钮状态
{
btnfirst.Enabled = false;
btnpre.Enabled = false;
} if (pds.IsLastPage)//尾页按钮状态
{
btnnext.Enabled = false;
btnlast.Enabled = false;
}
}
}

浙公网安备 33010602011771号