一、说明
PagedDataSource对象是用于对数据源分页的类,使用它可以更灵活的控制分页效果以及布局。在GridView控件中,提供了分页功能,而在DataList中,没有专门的分页功能,这时,可以使用PagedDataSource对象。
二、分页功能的前台布局(测试)
<asp:DataList ID="dlData" runat="server" RepeatColumns="4">
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"username") %>'/>
<asp:Label ID="lblTime" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"pwd") %>'/>
</ItemTemplate>
</asp:DataList>
<asp:LinkButton ID="linkBtnPre" OnCommand="IndexChanging" CommandArgument="pre" runat="server">上一页></asp:LinkButton>
<asp:LinkButton ID="linkBtnNext" OnCommand="IndexChanging" CommandArgument="next" runat="server">下一页</asp:LinkButton>
三、分页功能的后台代码
namespace DataList分页
{
public partial class index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["pageindex"] = "0";
BindData();
}
}
private void BindData()
{
string strSql = "server=.;database=post;uid=sa;pwd=123";
SqlConnection conn = new SqlConnection(strSql);
conn.Open();
SqlCommand com = new SqlCommand();
com.Connection = conn;
com.CommandType = CommandType.Text;
string str = "select * from userInfo"; //一个测试表(username,pwd)
com.CommandText = str;
SqlDataAdapter da = new SqlDataAdapter(com);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt != null && dt.Rows.Count > 0)
{
PagedDataSource pageDs = new PagedDataSource(); //允许分页的一个数据源类
pageDs.DataSource = dt.DefaultView; //DefaultView表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图。
pageDs.AllowPaging = true;
pageDs.PageSize = 2;
pageDs.CurrentPageIndex = int.Parse(ViewState["pageindex"].ToString());
if (!pageDs.IsFirstPage)
{
linkBtnPre.Visible = true;
}
else
{
linkBtnPre.Visible = false;
}
if (!pageDs.IsLastPage)
{
linkBtnNext.Visible = true;
}
else
{
linkBtnNext.Visible = false;
}
dlData.DataSource = pageDs;
dlData.DataBind();
}
}
protected void IndexChanging(object sender, EventArgs e)
{
string strCommand = ((LinkButton)sender).CommandArgument.ToString();
int pageindex = int.Parse(ViewState["pageindex"].ToString());
if (strCommand == "pre")
{
pageindex = pageindex - 1;
}
else
{
pageindex = pageindex + 1;
}
ViewState["pageindex"] = pageindex;
BindData();
}
}
}