• 分页查询


    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default1.aspx.cs" Inherits="Default1" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <style type="text/css">
            table {
                 100%;
                background-color: navy;
                text-align: center;
            }
    
            #tr_Head {
                color: white;
            }
    
            .tr_Main {
                background-color: #e0e0e0;
            }
    
            td {
                padding: 5px;
            }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
            姓名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>&nbsp;
            性别:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>&nbsp;
            <asp:Button ID="Button1" runat="server" Text="查  询" />
            <br />
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            <br />
            <br />
            <asp:Repeater ID="Repeater1" runat="server">
                <HeaderTemplate>
                    <table>
                        <tr id="tr_Head">
                            <td>Ids</td>
                            <td>姓名</td>
                            <td>性别</td>
                        </tr>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr class="tr_Main">
                        <td><%#Eval("Ids") %></td>
                        <td><%#Eval("Name") %></td>
                        <td><%#Eval("Sex") %></td>
                    </tr>
                </ItemTemplate>
                <FooterTemplate>
                    </table>
                </FooterTemplate>
            </asp:Repeater><br />
            当前是第【<asp:Label ID="Label2" runat="server" Text="1"></asp:Label>】页,
            <asp:LinkButton ID="btn_Prev" runat="server">上一页</asp:LinkButton>&nbsp;
            <asp:LinkButton ID="btn_Next" runat="server">下一页</asp:LinkButton>
    
    
        </form>
    </body>
    </html>
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class Default1 : System.Web.UI.Page
    {
        int PageCount = 5;
    
        protected void Page_Load(object sender, EventArgs e)
        {
            Button1.Click += Button1_Click;//条件查询
            btn_Prev.Click += btn_Prev_Click;//上一页
            btn_Next.Click += btn_Next_Click;//下一页
    
            if (IsPostBack == false)//当IsPostBack为空的时候 进行数据填充
            {
                Repeater1.DataSource = new CeShiData().Select(TSQL(1));
                Repeater1.DataBind();//数据绑定
            }
        }
    
        //下一页
        void btn_Next_Click(object sender, EventArgs e)
        {
            if (Label2.Text == MaxNumber().ToString())//判断label2的数值是不是最大值
            {
                return;//如果是  就直接跳出
            }
    
            //1、看看当前第几页,然后将页数+1
            int PageNumber = Convert.ToInt32(Label2.Text) + 1;//获取下一页的页数 定义PageNumber获得PageNumber的数值 
            Label2.Text = PageNumber.ToString();//页面显示页数+1  用Label2来显示
    
            //2、再然后将+1后的页数的数据查出来绑定
            Repeater1.DataSource = new CeShiData().Select(TSQL(PageNumber));
            Repeater1.DataBind();//重新绑定
    
            Label1.Text = TSQL(PageNumber);
        }
    
        //上一页
        void btn_Prev_Click(object sender, EventArgs e)
        {
            if (Label2.Text == "1")//判断label2的数值是不是最小值
            {
                return;//是的话直接跳出
            }
    
            //1、看看当前第几页,然后将页数+1
            int PageNumber = Convert.ToInt32(Label2.Text) - 1;//获取下一页的页数
            Label2.Text = PageNumber.ToString();//页面显示页数+1
    
            //2、再然后将+1后的页数的数据查出来绑定
            Repeater1.DataSource = new CeShiData().Select(TSQL(PageNumber));
            Repeater1.DataBind();
    
            Label1.Text = TSQL(PageNumber);
        }
    
        //条件查询
        void Button1_Click(object sender, EventArgs e)
        {
            //1、将语句拼完 - 调用TSQL()方法
            //2、用拼完的语句查数据并绑定
            Repeater1.DataSource = new CeShiData().Select(TSQL(1));
            Repeater1.DataBind();
            Label1.Text = TSQL(1);
            Label2.Text = "1";
        }
    
    
        //核心,如何返回Tsql语句是难点
        private string TSQL(int PageNumber)
        {
            int cc = 0;//记录一下查询条数
            string sql = "select top " + PageCount + " * from CeShi";//查询的语句
            string t1 = "";//定义t1 t2 两个值  用来代替sql语句
            string t2 = "";
    
            //1、将条件查询的语句拼完
            if (TextBox1.Text != "")
            {
                sql += " where Name like '%" + TextBox1.Text + "%'";
                cc++;
                t1 = " where Name like '%" + TextBox1.Text + "%'";//确定t1的sql语句
            }
            if (TextBox2.Text != "")
            {
                if (cc > 0)
                {
                    sql += " and Sex like '%" + TextBox2.Text + "%'";
                    t2 = " and Sex like '%" + TextBox2.Text + "%'";//确定两种状态下t2 的sql语句
                }
                else
                {
                    sql += " where Sex like '%" + TextBox2.Text + "%'";
                    t2 = " where Sex like '%" + TextBox2.Text + "%'";//确定两种状态下t2 的sql语句
                }
                cc++;
            }
    
            //2、将分页的语句拼完
    
            if (cc > 0)
            {
                sql += " and Ids not in ( select top " + (PageCount * (PageNumber - 1)) + " Ids from CeShi " + t1 + t2 + " )";
            }
            else
            {
                sql += " where Ids not in ( select top " + (PageCount * (PageNumber - 1)) + " Ids from CeShi " + t1 + t2 + ")";
            }
    
            return sql;
        }
    
        //查询全部的复合条件的数据
        private string TSQL1()
        {
            int cc = 0;//记录一下查询条数
            string sql = "select * from CeShi";
    
            //1、将条件查询的语句拼完
            if (TextBox1.Text != "")//判断是否为空
            {
                sql += " where Name like '%" + TextBox1.Text + "%'";//模糊查询
                cc++;
            }
            if (TextBox2.Text != "")
            {
                if (cc > 0)
                {
                    sql += " and Sex like '%" + TextBox2.Text + "%'";//模糊查询
                }
                else
                {
                    sql += " where Sex like '%" + TextBox2.Text + "%'";//模糊查询
                }
                cc++;
            }
    
            return sql;
        }
        //查询最大页数
        private int MaxNumber()
        {
            List<CeShi> ccc = new CeShiData().Select(TSQL1());//查询数据库中所有的数据
    
            double bbb = ccc.Count / (PageCount * 1.0); //总页数,但是是浮点型
            return Convert.ToInt32(Math.Ceiling(bbb));//转化成整数
        }
    
    
        //1、做一个功能,先考虑,如何把他们合并起来
        //2、如何合并?看看他们有什么共同点 - 都是拼Tsql语句
        //3、再一步一步的按照主要功能来做
    
    
    
    }
  • 相关阅读:
    SQL Server 数据库部分常用语句小结(三)
    SQL Server 数据库部分常用语句小结(四)
    通过存储过程(SP)实现SQL Server链接服务器(LinkServer)的添加
    pcb布线强弱电间隔距离
    程序占用内存大小
    Offer来了(原理篇)笔记之第三章并发编程
    Offer来了(原理篇)笔记之第一章JVM原理
    西瓜视频奇妙的bug
    mongodb忘记了admin的账号密码
    MongoDB更改默认端口
  • 原文地址:https://www.cnblogs.com/zhangdemin/p/5707699.html
Copyright © 2020-2023  润新知