DataList也来分页??

核心cs代码

(list.ascx.css) 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
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 pweb.SQL;

public partial class list : System.Web.UI.UserControl
{
    /// <summary>
    /// 要绑定的Datalist的id
    /// </summary>
    public string DataListID
    {
        set
        {
            if (value != null)
            {
                ViewState["DataListID"] = value;
            }
        }
        get { return ViewState["DataListID"].ToString(); }
    }
    /// <summary>
    /// DataList的分页项数
    /// </summary>
    public int PageSize
    {
        set
        {
            if(value!=0)
           ViewState["pagesize"] = value;
            else
           ViewState["pagesize"] = 10;
        }
        get { return Convert.ToInt32( ViewState["pagesize"]); }
    }
    /// <summary>
    /// 设置查询语句
    /// </summary>
    public string SelectSQL
    {
        set
        {
            if (value != null)
                ViewState["SelectSQL"] = value;
               
        }
        get { return ViewState["SelectSQL"].ToString(); }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ViewState["pageindex"] = 0;
            bing(0);
        }
        else
        {
            bingpanel();
        }

    }
    private DataTable Getdate()
    {
        pweb_SQL pwebsql = new pweb_SQL();
        return pwebsql.ReTabel(SelectSQL);
    }
    protected void bing(int num)
    {
        Panel1.Controls.Clear();
        int pageindex = Convert.ToInt32(ViewState["pageindex"]);
        if (ViewState["DateListDataTable"] == null)
        {
            ViewState["DateListDataTable"] = Getdate();
        }
        DataTable dt = (DataTable)ViewState["DateListDataTable"];
        if (ViewState["pagecount"] == null)
        {
            int count = dt.Rows.Count;
            ViewState["pagecount"] = count / Convert.ToInt32(ViewState["pagesize"]);
            if (count % Convert.ToInt32(ViewState["pagesize"])>0)
                ViewState["pagecount"] = count / Convert.ToInt32(ViewState["pagesize"]) + 1;
        }
        DataTable Target = dt.Clone();
        for (int i = 0; i < PageSize; i++)
        {
            int index = i + PageSize * num;
            if (index < dt.Rows.Count)
            {
                Target.ImportRow(dt.Rows[index]);
            }
            else
                break;
        }
        DataList myDatalist = (DataList)Page.FindControl(DataListID);
        myDatalist.DataSource = Target;
        myDatalist.DataBind();
        bingpanel();

    }
    protected void bingpanel()
    {
        //if
        int pagecount = Convert.ToInt32(ViewState["pagecount"]);
        if (pagecount > 0)
        {
            int pageindex = Convert.ToInt32(ViewState["pageindex"]);
            //信息
            Label Label1 = new Label();
            Label1.Text = " ";
            Label1.Text += "共有" + ViewState["pagecount"].ToString() + "页,当前是第 ";
            Label1.Text += (pageindex + 1).ToString();
            Label1.Text += "页";
            Panel1.Controls.Add(Label1);
            Panel1.Controls.Add(new LiteralControl("&nbsp;"));
            //首页
            LinkButton lb = new LinkButton();
            lb.ID = "first";
            lb.Text = "首页";
            lb.CommandName = "first";
            lb.Command += allCommane;
            if (pageindex == 0)
                lb.Enabled = false;
            Panel1.Controls.Add(lb);
            Panel1.Controls.Add(new LiteralControl("&nbsp;"));
            //上一页
            lb = new LinkButton();
            lb.ID = "pref";
            lb.Text = "上一页";
            lb.Command += allCommane;
            lb.CommandName = "pref";
            if (pageindex == 0)
                lb.Enabled = false;
            Panel1.Controls.Add(lb);
            Panel1.Controls.Add(new LiteralControl("&nbsp;"));
            //添加数据页
            addnum(pageindex);

            //下一页
            lb = new LinkButton();
            lb.ID = "next";
            lb.Text = "下一页";
            lb.Command += allCommane;
            lb.CommandName = "next";
            if (pageindex == pagecount-1)
                lb.Enabled = false;
            Panel1.Controls.Add(lb);
            Panel1.Controls.Add(new LiteralControl("&nbsp;"));
            //末叶
            lb = new LinkButton();
            lb.ID = "last";
            lb.Text = "末页";
            lb.Command += allCommane;
            lb.CommandName = "last";
            if (pageindex == pagecount-1)
                lb.Enabled = false;
            Panel1.Controls.Add(lb);
            Panel1.Controls.Add(new LiteralControl("&nbsp;"));
        }

       
    }
    private void addnum(int p)
    {
        int pagecount= Convert.ToInt32(ViewState["pagecount"]);
        int maxnum=1;
        if (p == 0)
        {
            if (pagecount >= 4)
                maxnum = 4;
            else
                maxnum = pagecount;
            for (int i = 1; i <= maxnum; i++)
            {
                writenum(i);
            }
        }
        else
        {
            //写当前页前面的页
            if (p - 3 > 0)
            {
                for (int i = p - 3; i <= p; i++)
                    writenum(i);
            }
            else
            {
                for (int i = 1; i <= p; i++)
                {
                    writenum(i);
                }
            }
            //写当前页后面页
            if (pagecount - p > 3)
            {
                for (int i = p + 1; i <=p+4; i++)
                {
                    writenum(i);
                }
            }
            else
            {
                for (int i = p + 1; i <=pagecount; i++)
                {
                    writenum(i);
                }
            }
        }
        //throw new Exception("The method or operation is not implemented.");
    }
    private void writenum(int i)
    {
       
        LinkButton lb = new LinkButton();
        lb.ID = i.ToString();
        lb.Text = i.ToString();
        lb.Command += allCommane;
        lb.CommandName = i.ToString();
        if (i-1== Convert.ToInt32(ViewState["pageindex"]))
            lb.Enabled = false;
        Panel1.Controls.Add(lb);
        Panel1.Controls.Add(new LiteralControl("&nbsp;"));
    }
    protected void allCommane(object sender, CommandEventArgs e)
    {
       
        int pageindex=Convert.ToInt32(ViewState["pageindex"]);
        switch(e.CommandName)
        {
            case "pref":
                if (pageindex > 0)
                {
                    ViewState["pageindex"] = pageindex - 1;
                }
                break;
            case "next":
                if (pageindex <Convert.ToInt32(ViewState["pagecount"])-1)
                {
                    ViewState["pageindex"] = pageindex + 1;
                }
                break;
            case "first":
                ViewState["pageindex"] = 0;
                break;
            case "last":
                ViewState["pageindex"] =Convert.ToInt32( ViewState["pagecount"])-1;
                break;
                //数据页
            default:
                ViewState["pageindex"] = int.Parse(e.CommandName) - 1;
                break;
        }
        bing(Convert.ToInt32(ViewState["pageindex"]));

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值