ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用Repeater自己写的SQL分页

使用Repeater自己写的SQL分页

原创 Linux操作系统 作者:664054106 时间:2012-11-23 23:55:53 0 删除 编辑
//多重载分页类库

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Web.UI.WebControls;
using System.Data;

namespace TestProject.Class
{

    /*
     *数据分页类库 
     */
    public class DataPaging
    {
        static String strconn = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
        //总条数和总页数
        public static long[] allpage_sumcount(string allsqlcount, int pagecount)
        {
            SqlConnection con = new SqlConnection(strconn);

            DataSet ds = new DataSet();

            SqlDataAdapter sda = new SqlDataAdapter(allsqlcount, con);
            sda.Fill(ds, "name");
            int allpage;
            long sumcount = ds.Tables["name"].DefaultView.Count;//总条数
            if (sumcount % pagecount == 0)
            {
                allpage = (int)sumcount / pagecount;
            }
            else
            {
                allpage = (int)sumcount / pagecount + 1;
            }
            long[] sumcount_allpage = { allpage, sumcount};//总条数和总页数
            return sumcount_allpage;
        }

        //DataSource(string selectsql)---不分页
        public static PagedDataSource DataSource(string selectsql)
        {
            SqlConnection con = new SqlConnection(strconn);

            DataSet ds = new DataSet();

            SqlDataAdapter sda = new SqlDataAdapter(selectsql, con);
            sda.Fill(ds, "name");

            PagedDataSource DataSource = new PagedDataSource();
            DataSource.DataSource = ds.Tables["name"].DefaultView;
            return DataSource;
        }

        //DataSource(string selectsql)---不分页加行号
        public static PagedDataSource DataSource(string selectsql,string id,string rownum)
        {
            SqlConnection con = new SqlConnection(strconn);

            DataSet ds = new DataSet();
            selectsql = selectsql.ToLower();
            //selectsql += " row_number() over(order by id desc) as rownum, ";
            selectsql = selectsql.Insert(selectsql.IndexOf("select") + 7, " row_number() over(order by majorkeyid asc) as rownum, ");
            selectsql = selectsql.Replace("majorkeyid", id);
            selectsql = selectsql.Replace("rownum", rownum);
            SqlDataAdapter sda = new SqlDataAdapter(selectsql, con);
            sda.Fill(ds, "name");

            PagedDataSource DataSource = new PagedDataSource();
            DataSource.DataSource = ds.Tables["name"].DefaultView;
            return DataSource;
        }

        //DataSource(string selectsql, string startcount, string endcount)---分页==根据唯一的条件升序排序
        /*
         * selectssql:基本查询sql
         * id:唯一,可复合键。一般将唯一id作为排序
         * startcount:分页的起始条数
         * endcount:分页的结束条数
         */
        public static PagedDataSource DataSource(string selectsql,string id, string startcount, string endcount)
        {
            SqlConnection con = new SqlConnection(strconn);

            DataSet ds = new DataSet();
            selectsql = selectsql.ToLower();
            selectsql=selectsql.Insert(selectsql.IndexOf("select")+7,"* from (select row_number() over(order by majorkeyid asc) rownum,");//必须要有唯一的Id
            selectsql = selectsql + " ) t where t.rownum>=@startcount and t.rownum <=@endcount ";
            selectsql = selectsql.Replace("majorkeyid", id);
            SqlDataAdapter sda = new SqlDataAdapter(selectsql, con);
            sda.SelectCommand.Parameters.Add(new SqlParameter("@startcount", startcount));
            sda.SelectCommand.Parameters.Add(new SqlParameter("@endcount", endcount));
            sda.Fill(ds, "name");

            PagedDataSource DataSource = new PagedDataSource();
            DataSource.DataSource = ds.Tables["name"].DefaultView;
            return DataSource;
        }

        //DataSource(string selectsql, string startcount, string endcount)---分页自选排序于排序状态
        /*
         * orderobj:排序的字段
         * orderzt:排序的状态类型
         * 
         */
        public static PagedDataSource DataSource(string selectsql, string id, string startcount, string endcount,string ordertype)
        {
            SqlConnection con = new SqlConnection(strconn);

            DataSet ds = new DataSet();
            selectsql = selectsql.ToLower();
            selectsql = selectsql.Insert(selectsql.IndexOf("select") + 7, "* from (select row_number() over(order by majorkeyid asc) rownum,");//必须要有唯一的Id
            selectsql = selectsql + " ) t where t.rownum>=@startcount and t.rownum <=@endcount ";
            selectsql = selectsql.Replace("majorkeyid", id);
            if (ordertype != "")
            {
                selectsql = selectsql.Replace("asc", ordertype);
            }

            SqlDataAdapter sda = new SqlDataAdapter(selectsql, con);
            sda.SelectCommand.Parameters.Add(new SqlParameter("@startcount", startcount));
            sda.SelectCommand.Parameters.Add(new SqlParameter("@endcount", endcount));
            sda.Fill(ds, "name");

            PagedDataSource DataSource = new PagedDataSource();
            DataSource.DataSource = ds.Tables["name"].DefaultView;
            return DataSource;
        }
    }
}


//前台.aspx页面代码

                   
                       
                       
                            头像
                       
                           
                                <%#Eval("a_name")%>
                           
                           
                                <%#Eval("a_phone")%>
                           
                           
                                [查看/修改]
                           
                           
                                [删除]
                           
                       
                   
               


//后台.cs代码

string pagestr = "1";//当前页
        int allpage = 0;//总页数
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                pds(pagestr);
            }
        }
        private void pds(string pagestr)
        {
            string sqlstr = " SELECT [id],[a_name],[a_pass],[a_header],[a_phone],[a_email] FROM [Admin] where 1=1 "; 

            long sumcount = 0;//总条数
            int pagecount = 10;//每页数
            allpage = (int)DataPaging.allpage_sumcount(sqlstr, pagecount)[0];//总页数
            sumcount = DataPaging.allpage_sumcount(sqlstr, pagecount)[1];//总条数 

            string startcount = (pagecount * (Convert.ToInt32(pagestr) - 1) + 1).ToString();//开始条数
            string endcount = (pagecount * (Convert.ToInt32(pagestr) - 1) + pagecount).ToString();//结束条数
            //数据绑定显示
            Pay_List.DataSource = DataPaging.DataSource(sqlstr, "id", startcount, endcount);
            Pay_List.DataBind();
            IsEnabled(sumcount);//分页按钮是否可用函数
        }

        protected void IsEnabled(long sumcount)
        {
            lblts.Text = sumcount.ToString();//显示总条数
            lblpc.Text = allpage.ToString();//显示总页数

            if (Convert.ToInt32(lblp.Text) > allpage)
            {
                lblp.Text = "1";
            }
            else
            {
                lblp.Text = pagestr;//当前第几页
            }


            if (lblp.Text == "1")
            {
                lbprev.Enabled = false;
                lbfirst.Enabled = false;
            }
            else
            {
                lbprev.Enabled = true;
                lbfirst.Enabled = true;
                //lbnext.Enabled = true;
                //lbend.Enabled = true;
            }
            if (lblpc.Text == "0" && lblp.Text == "1")
            {
                lbnext.Enabled = false;
                lbend.Enabled = false;
                lbprev.Enabled = false;
                lbfirst.Enabled = false;
            }
            else if (lblp.Text == lblpc.Text)
            {
                lbnext.Enabled = false;
                lbend.Enabled = false;
            }
            else
            {
                //lbprev.Enabled = true;
                //lbfirst.Enabled = true;
                lbnext.Enabled = true;
                lbend.Enabled = true;
            }
        }

        //分页
        protected void lbfirst_Click(object sender, EventArgs e)
        {
            pagestr = "1";
            pds(pagestr);
        }
        protected void lbprev_Click(object sender, EventArgs e)
        {
            pagestr = (Convert.ToInt32(lblp.Text) - 1).ToString();
            pds(pagestr);
        }
        protected void lbnext_Click(object sender, EventArgs e)
        {
            pagestr = (Convert.ToInt32(lblp.Text) + 1).ToString();
            pds(pagestr);
        }
        protected void lbend_Click(object sender, EventArgs e)
        {
            pagestr = lblpc.Text;
            pds(pagestr);

        }

    }

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26481450/viewspace-749862/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-11-25

  • 博文量
    27
  • 访问量
    78455