• 用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方法

    做完后的效果图:

    神舟龙效果

  • 相关阅读:
    ACM 01背包问题
    HDU 1222(数论,最大公约数)
    HDU 1045(质因数分解)
    HDU 4548(美素数)
    POJ 1458 Common Subsequence
    light oj 1047-neighbor house
    POJ 3903 Stock Exchange
    HDU 1069 monkey an banana DP LIS
    max sum
    ACM比赛
  • 原文地址:https://www.cnblogs.com/shenzhoulong/p/1757999.html
Copyright © 2020-2023  润新知