• WebFrom 小程序【条件查询与分页整合】


    将前面的条件查询功能与分页显示整合到一个页面中

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    
    <!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>
    </head>
    <body>
        <form id="form1" runat="server">
    
            <br />
            名称:<asp:TextBox ID="txt_name" runat="server"></asp:TextBox>
            油耗:<asp:DropDownList ID="dr_oil" runat="server">
                <asp:ListItem Text="大于" Value=">"></asp:ListItem>
                <asp:ListItem Text="小于" Value="<"></asp:ListItem>
                <asp:ListItem Text="大于等于" Value=">="></asp:ListItem>
                <asp:ListItem Text="小于等于" Value="<="></asp:ListItem>
                <asp:ListItem Text="等于" Value="="></asp:ListItem>
               </asp:DropDownList>
            <asp:TextBox ID="txt_oil" runat="server"></asp:TextBox>
            价格:<asp:DropDownList ID="dr_Price" runat="server">
                <asp:ListItem Text="任意价格" Value="null"></asp:ListItem>
                <asp:ListItem Text="20万至30万" Value="price >=20 and price <=30"></asp:ListItem>
                <asp:ListItem Text="30万至40万" Value="price >=30 and price <=40"></asp:ListItem>
                <asp:ListItem Text="大于40万" Value="price > 40"></asp:ListItem>
               </asp:DropDownList>
            <asp:Button ID="Button1" runat="server" Text="查询" />
            <br /><br />
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            <br /><br />
    
    
            <table style=" 100%; text-align: center; background-color: navy;">
                <tr style="color: white;">
                    <td>ids</td>
                    <td>编号</td>
                    <td>名称</td>
                    <td>油耗</td>
                    <td>马力</td>
                    <td>排量</td>
                    <td>价格</td>
                </tr>
                <asp:Repeater ID="Repeater1" runat="server">
                    <ItemTemplate>
                        <tr style="background-color: white;">
                            <td><%#Eval("Ids") %></td>
                            <td><%#Eval("Code") %></td>
                            <td><%#Eval("Name") %></td>
                            <td><%#Eval("Oil") %></td>
                            <td><%#Eval("Powers") %></td>
                            <td><%#Eval("Exhaust") %></td>
                            <td><%#Eval("Price") %></td>
                        </tr>
                    </ItemTemplate>
                </asp:Repeater>
            </table>
            <br />
            当前第[
            <asp:Literal ID="lit_NowNumber" runat="server" Text="1"></asp:Literal>
            ]页&nbsp;&nbsp;
            共[
            <asp:Literal ID="lit_MaxNumber" runat="server" Text="1"></asp:Literal>
            ]页&nbsp;&nbsp;
            <asp:Button ID="btn_first" runat="server" Text="首页" />
            <asp:Button ID="btn_prev" runat="server" Text="上一页" />
            <asp:Button ID="btn_next" runat="server" Text="下一页" />
            <asp:Button ID="btn_last" runat="server" Text="尾页" />
            &nbsp;&nbsp;
            <asp:DropDownList AutoPostBack="true" ID="DropDownList1" runat="server"></asp:DropDownList>
            <asp:Button ID="btn_jump" runat="server" Text="跳转" />
            <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
    
        </form>
    </body>
    </html>
    展示页代码
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class _Default : System.Web.UI.Page
    {
        int PageCount = 5; //每页显示条数
    
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Repeater1.DataSource = new carData().Select(PageCount, 1);//绑定所有数据
                Repeater1.DataBind();
    
                lit_MaxNumber.Text = MaxPageNumber().ToString();
    
                //将一共有多少页绑定到下拉列表中
                for (int i = 1; i <= MaxPageNumber(); i++)
                {
                    ListItem li = new ListItem(i.ToString(), i.ToString());
                    DropDownList1.Items.Add(li);
                }
    
            }
            btn_last.Click += btn_last_Click;
            btn_next.Click += btn_next_Click;
            btn_prev.Click += btn_prev_Click;
            btn_first.Click += btn_first_Click; 
            btn_jump.Click += btn_jump_Click;
    
            DropDownList1.SelectedIndexChanged += btn_jump_Click;//下拉列表选值改变时,查询结果立刻改变
    
            Button1.Click += Button1_Click;
        }
    
    
    
        //组合查询
        void Button1_Click(object sender, EventArgs e)
        {
            Repeater1.DataSource = EndData(1);
            Repeater1.DataBind();
            lit_NowNumber.Text = "1";
         
                                   //最大页数改变*******
            lit_MaxNumber.Text = MaxPageNumber2().ToString();
    
        }
    
    
    
    
    
    
        //跳转
        void btn_jump_Click(object sender, EventArgs e)
        {
            int a = Convert.ToInt32(DropDownList1.SelectedValue);
                                                              //将下一页数据绑定
            Repeater1.DataSource = new carData().Select(PageCount, a);
            Repeater1.DataBind();
    
                                                                 //将当前显示的页数改变到页面上去
            lit_NowNumber.Text = a.ToString();
        }
    
    
        //首页
        void btn_first_Click(object sender, EventArgs e)
        {
                                              //将第一页数据绑定
            Repeater1.DataSource = EndData(1);
            Repeater1.DataBind();
    
                                             //将当前显示的页数改变到页面上去
             lit_NowNumber.Text = "1";
        }
    
    
    
    
        //上一页
        void btn_prev_Click(object sender, EventArgs e)
        {
                                                        //获取当前页数,计算上一页页数
            int nextNumber = Convert.ToInt32(lit_NowNumber.Text) - 1;
    
            if (nextNumber < 1)
            {
                return;
            }
    
                                                            //将下一页数据绑定到
            Repeater1.DataSource = EndData(nextNumber);
            Repeater1.DataBind();
    
                                                         //将当前显示的页数改变到页面上去
            lit_NowNumber.Text = nextNumber.ToString();
        }
    
    
    
        //下一页
        void btn_next_Click(object sender, EventArgs e)
        {
                                                                 //获取当前页数,计算下一页页数
            int nextNumber = Convert.ToInt32(lit_NowNumber.Text) + 1;
    
            if (nextNumber > MaxPageNumber2())
            {
                return;
            }
    
                                                          //将下一页数据绑定到
            Repeater1.DataSource = EndData(nextNumber);
            Repeater1.DataBind();
    
                                                           //将当前显示的页数改变到页面上去
            lit_NowNumber.Text = nextNumber.ToString();
        }
    
    
    
        //尾页
        void btn_last_Click(object sender, EventArgs e)
        {
                                                            //将尾页数据绑定到
            Repeater1.DataSource = new carData().Select(PageCount, MaxPageNumber2());
            Repeater1.DataBind();
    
                                                               //将当前显示的页数改变到页面上去
            lit_NowNumber.Text = MaxPageNumber().ToString();
        }
    
    
        //计算页数
        public int MaxPageNumber()
        {
            int a = 0;
            int maxcount = new carData().SelectCount();
            decimal d = Convert.ToDecimal(maxcount) / PageCount;  //两个 int 计算 获得 int 类型的数据
            a = Convert.ToInt32(Math.Ceiling(d));
            return a;
        }
    
    
    
        //查询每一页的方法
        public List<car> EndData(int n)
        {
            int count = 0;
            string tsql = "select top " + PageCount + " *from car ";
    
            string sql1 = "";
    
            if (txt_name.Text.Trim().Length > 0)
            {
                sql1 += "where name like '%" + txt_name.Text.Trim() + "%' ";
                count++;
            }
    
            if (txt_oil.Text.Trim().Length > 0)
            {
                if (count > 0)
                {
                    sql1 += "and oil " + dr_oil.SelectedValue + " " + txt_oil.Text.Trim() + " ";
                }
                else
                {
                    sql1 += "where oil " + dr_oil.SelectedValue + " " + txt_oil.Text.Trim() + " ";
                }
                count++;
            }
    
            if (dr_Price.SelectedValue != "null")
            {
                if (count > 0)
                {
                    sql1 += " and " + dr_Price.SelectedValue;
                }
                else
                {
                    sql1 += " where " + dr_Price.SelectedValue;
                }
                count++;
            }
    
            tsql += sql1;
    
            if (count > 0)
            {
                tsql += " and ids not in(select top " + (PageCount * (n - 1)) + " ids from car " + sql1 + ")";
            }
            else
            {
                tsql += " where ids not in(select top " + (PageCount * (n - 1)) + " ids from car " + sql1 + ")";
            }
    
            Label1.Text = tsql;
    
            List<car> clist = new carData().SelectAll(tsql, new Hashtable());
            return clist;
        }
    
    
    
        //查询所有记录的方法
        public int MaxPageNumber2()
        {
            int end = 0;
            int count = 0;
            string tsql = "select count(*) from car ";
    
            string sql1 = "";
    
            if (txt_name.Text.Trim().Length > 0)
            {
                sql1 += "where name like '%" + txt_name.Text.Trim() + "%' ";
                count++;
            }
    
            if (txt_oil.Text.Trim().Length > 0)
            {
                if (count > 0)
                {
                    sql1 += "and oil " + dr_oil.SelectedValue + " " + txt_oil.Text.Trim() + " ";
                }
                else
                {
                    sql1 += "where oil " + dr_oil.SelectedValue + " " + txt_oil.Text.Trim() + " ";
                }
                count++;
            }
    
            if (dr_Price.SelectedValue != "null")
            {
                if (count > 0)
                {
                    sql1 += " and " + dr_Price.SelectedValue;
                }
                else
                {
                    sql1 += " where " + dr_Price.SelectedValue;
                }
                count++;
            }
    
            tsql += sql1;
    
            int aaa = new carData().SelectCount(tsql);
            Label2.Text = aaa.ToString();
    
            end = Convert.ToInt32(Math.Ceiling(Convert.ToDecimal(aaa) / PageCount));
            return end;
    
        }
    
    
    }
    后台代码
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Web;
    
    /// <summary>
    /// carData 的摘要说明
    /// </summary>
    public class carData
    {
        SqlConnection conn = null;
        SqlCommand cmd = null;
    
        public carData()
        {
            conn = new SqlConnection("server=.;database=Data0216;user=sa;pwd=123");
            cmd = conn.CreateCommand();
        }
    
    
        //第一次加载时查询所有数据( 每条显示多少,  第几页)
        public List<car> Select(int pcount, int pnumber)
        {
            List<car> clist = new List<car>();
            cmd.CommandText = "select top " + pcount + " * from car where ids not in(select top " + (pcount * (pnumber - 1)) + " ids from car)";
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                car c = new car();
                c.Ids = Convert.ToInt32(dr["ids"]);
                c.Code = dr["code"].ToString();
                c.Name = dr["name"].ToString();
                c.Oil = Convert.ToDecimal(dr["oil"]);
                c.Powers = Convert.ToInt32(dr["powers"]);
                c.Exhaust = Convert.ToInt32(dr["exhaust"]);
                c.Price = Convert.ToDecimal(dr["price"]);
                clist.Add(c);
            }
            conn.Close();
            return clist;
        }
    
    
    
    
        //组合查询的所有结果
        public int SelectCount(string tsql)
        {
            int a = 0;
            cmd.CommandText = tsql;
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            dr.Read();
            a = Convert.ToInt32(dr[0]);
            conn.Close();
            return a;
        }
    
    
    
        //将查询语句放入字符串中传值,
        public List<car> SelectAll(string tsql, Hashtable hh)
        {
            List<car> clist = new List<car>();
            cmd.CommandText = tsql;
            cmd.Parameters.Clear();
            foreach (string s in hh.Keys)
            {
                cmd.Parameters.Add(s, hh[s]);
            }
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                car c = new car();
                c.Ids = Convert.ToInt32(dr["ids"]);
                c.Code = dr["code"].ToString();
                c.Name = dr["name"].ToString();
                c.Oil = Convert.ToDecimal(dr["oil"]);
                c.Powers = Convert.ToInt32(dr["powers"]);
                c.Exhaust = Convert.ToInt32(dr["exhaust"]);
                c.Price = Convert.ToDecimal(dr["price"]);
                clist.Add(c);
            }
            conn.Close();
            return clist;
        }
    
    
    }
    方法
  • 相关阅读:
    网页制作
    线性表
    学习进度表
    我是一只IT小小鸟读后感
    Git分支管理(一)
    家庭因你而不同
    Mysql循环insert数据
    IDEA,右边栏不显示maven解决方案
    Linux定时清理日志脚本
    JAVA的夸平台特性的优势——工厂在线生产信息采集项目
  • 原文地址:https://www.cnblogs.com/Tanghongchang/p/6922574.html
Copyright © 2020-2023  润新知