zoukankan      html  css  js  c++  java
  • ASP.NET简单SQL分页的实现

    今天是出来实习的第32天,在学校学的像是囫囵吞枣一样,什么都是马马虎虎的,而分页这样的需要逻辑的像我这样的懒人喜欢用插件,仔细捉摸了下也不好,所以就花一点时间研究了下分页,

    今天就来说说简单的SQL语句分页在ASP.NET的实现

    SQL语句怎么写?

    因为要写的是简单SQL语句实现分页所以SQL自然就不会很难啦!

    1.IN NOT IN写法 效率低

    --IN 和 NOT IN,效率较低
    --这条语句的意思是查询五条数据不在前十条里的数据
    SELECT TOP 5 * FROM TableName WHERE ID NOT IN(SELECT TOP 10 ID FROM TableName )

    2.通过升序和降序排列

    --通过排序进行分页
    --首先查询十五条数据中的前五条 获取11到15的数据,因为是倒序,所以最后进行升序排列
    SELECT * FROM(
        SELECT TOP 5 * FROM(
            SELECT TOP 15 * FROM TableName ORDER BY ID ASC) 
                AS TEMP1 ORDER BY ID DESC)
            AS TEMP2 ORDER BY ID ASC

    3.使用SQL Server Row Num()函数

    --首先Row_Number()函数要和 over 配套使用
    --首先通过Row_Number()函数查询前十条数据 然后全部并且大于0条的数据
    --简单来讲top10 相当于一页显示多少条数据 而0相当于当前页数
    select * from (select top 10 ROW_NUMBER() over(order by id) as temp,* from sqlpagetest )as temp where xxx>0

    实现分页

    Dbhelper

       public DataTable PageBysql(int pageSize, int pageIndex)
            {
                string sql = string.Format("select * from (select top {0} ROW_NUMBER() over(order by id) as xxx,* from sqlpagetest )as temp where xxx>{1}", pageSize, pageIndex);
                DataTable tb = new DataTable();
                SqlDataAdapter dp = new SqlDataAdapter(sql, conn);
                dp.Fill(tb);
                return tb;
            }

    前台代码

      <form id="form1" runat="server">
            <div>
                <table>
                    <tr>
                        <td>ID</td>
                        <td>姓名</td>
                    </tr>
                    <asp:Repeater ID="Repeater1" runat="server">
                        <ItemTemplate>
                            <tr>
                                <td><%#Eval("id") %></td>
                                <td><%#Eval("name") %></td>
                            </tr>
                        </ItemTemplate>
                    </asp:Repeater>
                </table>
                <%--显示pageSize--%>
                <asp:HiddenField ID="HiddenField1" runat="server" />
                       <%--显示pageIndex--%>
                 <asp:HiddenField ID="HiddenField2" runat="server" />
                <asp:LinkButton ID="LinkButton1" OnClick="LinkButton1_Click" runat="server">上一页</asp:LinkButton>
                 <asp:LinkButton ID="LinkButton2" OnClick="LinkButton2_Click" runat="server">下一页</asp:LinkButton>
            </div>
        </form>

    后台代码

    public int maxpage;
            public int nowpage;
            protected void Page_Load(object sender, EventArgs e)
            {
    
                if (!IsPostBack)
                {
                    maxpage = 10;
                    nowpage = 0;
                    page(maxpage, nowpage);
                    HiddenField1.Value = maxpage.ToString();
                    HiddenField2.Value = nowpage.ToString();
                }
            }
            public void page(int maxpage, int nowpage)
            {
                Repeater1.DataSource = new dbhelper().PageBysql(maxpage, nowpage);
                Repeater1.DataBind();
            }
            //上一页
            protected void LinkButton1_Click(object sender, EventArgs e)
            {
                if (int.Parse(HiddenField2.Value) > 0)
                {
                    maxpage =int.Parse(HiddenField1.Value)-10;
                    nowpage = int.Parse(HiddenField2.Value)-10;
                    page(maxpage, nowpage);
                    HiddenField1.Value = maxpage.ToString();
                    HiddenField2.Value = nowpage.ToString();
                }
                else
                {
    
                }
            }
            //下一页
            protected void LinkButton2_Click(object sender, EventArgs e)
            {
                
                    maxpage +=(10+ int.Parse(HiddenField1.Value));
                    nowpage += (10+int.Parse(HiddenField2.Value));
                    page(maxpage, nowpage);
                    HiddenField1.Value = maxpage.ToString();
                    HiddenField2.Value = nowpage.ToString();
               
            }

    积土而为山,积水而为海。 ——荀子

  • 相关阅读:
    R 读取xls/xlsx文件
    网页免费转换为可编辑的PDF
    Python: NumPy, Pandas学习资料
    鱼油资料
    Activity的四种启动模式和onNewIntent()
    Android Service、IntentService,Service和组件间通信
    Activity生命周期
    Node.js学习起步
    Android 技能图谱学习路线
    Blog
  • 原文地址:https://www.cnblogs.com/wyq-study/p/7380463.html
Copyright © 2011-2022 走看看