用 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方法
做完后的效果图:
神舟龙效果


本文转自shenzhoulong  51CTO博客,原文链接:http://blog.51cto.com/shenzhoulong/332139,如需转载请自行联系原作者
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值