当前位置: 代码迷 >> ASP.NET >> 手写分页,求原码?解决后立刻给分。分不多了见谅解决办法
  详细解决方案

手写分页,求原码?解决后立刻给分。分不多了见谅解决办法

热度:9180   发布时间:2013-02-25 00:00:00.0
手写分页,求原码?解决后立刻给分。分不多了见谅
我平常用gridview来绑定dataset从来也没有用过datatable,所以datatable从来没有用过更别谈分页了。
想求一个源代码,给datatable绑定数据,分页,实现增删改查像gridview那样的。解决后立刻结贴。


------解决方案--------------------------------------------------------
控件分页的
C# code
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 System.Data.OleDb;using System.IO;using System.Drawing;public partial class display_display : System.Web.UI.Page{    int CurrentPage;//当前页数    int PageSize;   //每页条数    int PageCount;  //总页数    int RecordCount;//总条数    public string SubStr(string sString, int nLeng)    {        if (sString.Length <= nLeng)        {            return sString;        }        string sNewStr = sString.Substring(0, nLeng);        sNewStr = sNewStr + "...";        return sNewStr;    }    protected string FormatURL(object strArgument)    {        return "image.aspx?id=" + strArgument.ToString();    }    private void Page_Load(object sender, System.EventArgs e)    {        string pic = Request["Pic_ID"];        PageSize = 9;//每页10条记录        if (!Page.IsPostBack)        {            CurrentPage = 0;//当前页习惯设为0            ViewState["PageIndex"] = 0;//页索引也设为0            //计算总共有多少记录            RecordCount = CalculateRecord();            //计算总共有多少页            if (RecordCount % PageSize == 0)            {                PageCount = RecordCount / PageSize;            }            else            {                PageCount = RecordCount / PageSize + 1;            }            this.TotalLbl.Text = PageCount.ToString();//显示总页数            ViewState["PageCount"] = PageCount;//会话session 对整个 application 有效 ,而视图状态 viewstate相当于某个页面的 session            this.DataListBind();//不可以放在初始化条件之前就绑定,那样的话,如果仅有一页的数据,“下一页”页仍然显示        }    }    //计算总共有多少条记录    private int CalculateRecord()    {        try        {            int recordCount;            OleDbConnection oc = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Server.MapPath(@"~\App_Data\DataBase.aspx")); //数据库使用Northwind;            oc.Open();            string OleDb = "select count(*) as [count] from Picture";            OleDbCommand cmd = new OleDbCommand(OleDb, oc);            OleDbDataReader sdr = cmd.ExecuteReader();            if (sdr.Read())            {                recordCount = Int32.Parse(sdr["count"].ToString());            }            else            {                recordCount = 0;            }            sdr.Close();            oc.Close();            return recordCount;        }        catch (Exception ex)        {            throw new Exception(ex.Message);        }    }    //将数据绑定到Datalist控件    public void DataListBind()    {        try        {            int StartIndex = CurrentPage * PageSize;//设定导入的起终地址            string OleDb = "SELECT [Pic_ID], [Pic],[Pic_Title] FROM [Picture] order by [Pic_id] desc";            DataSet ds = new DataSet();            OleDbConnection oc = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Server.MapPath(@"~\App_Data\DataBase.aspx"));            oc.Open();            OleDbDataAdapter sda = new OleDbDataAdapter(OleDb, oc);            sda.Fill(ds, StartIndex, PageSize, "Picture");//这是sda.Fill方法的第一次重载,里面的变量分别是数据集DataSet ,开始记录数StartRecord,最大的记录数MaxRecord,数据表名TableName            this.DataList1.DataSource = ds.Tables["Picture"].DefaultView;            this.DataList1.DataBind();            this.PreviousLB.Enabled = true;            this.NextLB.Enabled = true;            if (CurrentPage == (PageCount - 1)) this.NextLB.Enabled = false;//当为最后一页时,下一页链接按钮不可用            if (CurrentPage == 0) this.PreviousLB.Enabled = false;//当为第一页时,上一页按钮不可用            this.CurrentLbl.Text = (CurrentPage + 1).ToString();//当前页数        }        catch (Exception ex)        {            throw new Exception(ex.Message);        }    }    public void LinkButton_Click(Object sender, CommandEventArgs e)//自己编写的按钮点击事件    {        CurrentPage = (int)ViewState["PageIndex"];//获得当前页索引        PageCount = (int)ViewState["PageCount"];//获得总页数        string cmd = e.CommandName;        //判断cmd,以判定翻页方向        switch (cmd)        {            case "prev"://上一页                if (CurrentPage > 0) CurrentPage--;                break;            case "next":                if (CurrentPage < (PageCount - 1)) CurrentPage++;//下一页                break;            case "first"://第一页                CurrentPage = 0;                break;            case "end"://最后一页                CurrentPage = PageCount - 1;                break;            case "jump"://跳转到第几页                if (this.TextBox1.Text.Trim() == "" || Int32.Parse(this.TextBox1.Text.Trim()) > PageCount)//如果输入数字为空或超出范围则返回                {                    return;                }                else                {                    CurrentPage = Int32.Parse(this.TextBox1.Text.ToString()) - 1;                    break;                }        }        ViewState["PageIndex"] = CurrentPage;//获得当前页        this.DataListBind();//重新将DataList绑定到数据库    }       protected void ImageButton1_Click(object sender, ImageClickEventArgs e)    {        ImageButton ibt = (ImageButton)sender;                    this.Response.Redirect(@"~\display\pic.aspx?Pic_ID=" + ibt.CommandArgument);             // Response.Redirect(@"~\photo.aspx?pic_id =" + ImageButton1.CommandArgument.ToString());    }}
  相关解决方案