用datalist控件进行分页(28)
在开发网站时,常常需要在页面中显示一些信息,有时候显示的比较多,这时候我们就会用到分页,于是可以通过datalist控件中的数据绑定,分页显示该网页的信息。datalist控件的分页实现是借助pageddatasource类来实现的,该类封装了数据控件的分页属性,其常用属性及说明如下:
属性 | 说明 |
AllowPaging | 设置是否分页 |
AllowCustomPaging | 设置是否启用自定义分页 |
DataSource | 设置填充控件的源数据 |
PageSize | 设置在控件上每页显示的项数 |
PageCount | 设置总页数 |
FrstIndexPage | 获取页中的第一个索引 |
IsFirstPage | 获取一个值,指示该页是否为首页 |
IsLastPage | 获取一个值,指示该页是否为最后一页 |
在主页页面的page_load事件中,调用用户自定义的dlBind方法对datalist控件进行数据绑定并分页,page_load事件的代码如下:
protected void Page_Load(object sender, EventArgs e)
{
dlBind()
}
该页的page_load事件中调用自定义dlBind,dlBind方法为自定义的无返回值类型方法,该方法主要用来从数据库中查出符合指定条件的记录,并绑定datalist控件中,然后通过设置pagedatasource类对象allowpaging属性为true。来实现datalist控件的分页功能,dlBind方法代码如下:
#region 用户自定义bindDataList方法
/// <summary>
/// 该方法在DataList控件中实现分页功能
/// </summary>
public void bindDataList()
{
//将labPage控件显示的页数赋值给整型变量curpage中
int curpage = Convert.ToInt32(this.labPage.Text);
PagedDataSource ps = new PagedDataSource();//实例化一个PagedDataSource类对象
SqlConnection con = new SqlConnection(this.GetConStr());//连接数据库
con.Open();//打开数据库连接
string sqlstr = "select * from tb_tools";
SqlDataAdapter MyAdapter = new SqlDataAdapter(sqlstr, con);
DataSet ds = new DataSet();//实例化一个对象
MyAdapter.Fill(ds, "tb_tools");
ps.DataSource = ds.Tables["tb_tools"].DefaultView;
ps.AllowPaging = true; //是否可以分页
ps.PageSize = 2; //显示的数量
ps.CurrentPageIndex = curpage - 1; //取得当前页的页码
this.lnkbtnUp.Enabled = true;//显示上一页按钮
this.lnkbtnNext.Enabled = true;//显示下一页按钮
this.lnkbtnBack.Enabled = true;//显示最后一页按钮
this.lnkbtnOne.Enabled = true;//显示第一页按钮
if (curpage == 1)
{
this.lnkbtnOne.Enabled = false;//不显示第一页按钮
this.lnkbtnUp.Enabled = false;//不显示上一页按钮
}
if (curpage == ps.PageCount)
{
this.lnkbtnNext.Enabled = false;//不显示下一页按钮
this.lnkbtnBack.Enabled = false;//不显示最后一页按钮
}
this.labBackPage.Text = Convert.ToString(ps.PageCount);//将分页的总页数赋值给labBackPage控件中
this.dlContent.DataSource = ps;//在dlContent控件中绑定ps分页数据源
this.dlContent.DataKeyField = "ID";//将主键传递给dlContent控件中
this.dlContent.DataBind();//将数据源绑定到dbContent控件中
con.Close();//关闭数据库连接
}
#endregion
当用户单击用于操作分页linkbutton控件时,程序根据当前页码执行指定操作。用于控制分页的linkbutton控件的click事件代码:
#endregion
protected void lnkbtnOne_Click(object sender, EventArgs e)
{
this.labPage.Text = "1";//将“1”赋值给labPage控件当中
this.bindDataList();//调用用户自定义bindDataList方法
}
protected void lnkbtnUp_Click(object sender, EventArgs e)
{
this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) - 1);
this.bindDataList();//调用用户自定义bindDataList方法
}
protected void lnkbtnNext_Click(object sender, EventArgs e)
{
this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) + 1);
this.bindDataList();//调用用户自定义bindDataList方法
}
protected void lnkbtnBack_Click(object sender, EventArgs e)
{
this.labPage.Text = this.labBackPage.Text;
this.bindDataList();//调用用户自定义bindDataList方法
做完后的效果图: