weibform中Application、ViewState对象和分页

Application:

  全局公共变量组

  存放位置:服务器

  特点:所有访问用户都是访问同一个变量,但只要服务器不停机,变量一直存在于服务器的内存中,不要使用循环大量的创建Application对象,可能会造

     成服务器崩溃。

  生命周期:永久,只要服务器不停机

  使用方法:与Session一样

ViewState:

  用于记录页面的一些状态,就像人的病例,比如当执行提交后,网页可以保留一些已经输入的文本框而非清空

  webform中微软已经给我们做好了这个对象,自带此功能。

webform中一共6个内置对象:Request  Response  Session  Cookie Application ViewState

分页:

  为了用户查看以及页面加载速度,查看大量数据时需要进行分页操作, 

  主要通过查询语句以及各种判断来实现

  例:分页展示车辆信息

 

<%@ 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">
        <div>

            <asp:Repeater ID="Repeater1" runat="server">
                <HeaderTemplate>

                    <table style="width: 100%; text-align: center; background-color: navy;">
                        <thead>
                            <tr style="color: white;">
                                <%--<td>ids</td>--%>
                                <td>code</td>
                                <td>name</td>
                                <td>brand</td>
                                <td>time</td>
                                <td>oil</td>
                                <td>powers</td>
                                <td>exhaust</td>
                                <td>price</td>
                                <td>pic</td>
                            </tr>
                        </thead>
                        <tbody>
                </HeaderTemplate>

                <ItemTemplate>

                    <tr style="background-color: white;">
                        <%--<td><%#Eval("ids") %></td>--%>
                        <td><%#Eval("code") %></td>
                        <td><%#Eval("name") %></td>
                        <td><%#Eval("brand") %></td>
                        <td><%#Eval("time") %></td>
                        <td><%#Eval("oil") %></td>
                        <td><%#Eval("powers") %></td>
                        <td><%#Eval("exhaust") %></td>
                        <td><%#Eval("price") %></td>
                        <td><%#Eval("pic") %></td>
                    </tr>

                </ItemTemplate>
                <FooterTemplate>
                    </tbody>
            </table>
                </FooterTemplate>
            </asp:Repeater>

            当前第【<asp:Label ID="Label_NowPage" runat="server" Text="Label"></asp:Label>】页
            &nbsp;&nbsp;共【<asp:Label ID="Label_MaxPage" runat="server" Text="Label"></asp:Label>】页&nbsp;&nbsp;
            <asp:LinkButton ID="btn_first" runat="server">首页</asp:LinkButton>
            &nbsp;&nbsp;
            <asp:LinkButton ID="btn_prev" runat="server">上一页</asp:LinkButton>
            &nbsp;&nbsp;
            <asp:LinkButton ID="btn_next" runat="server">下一页</asp:LinkButton>
            &nbsp;&nbsp;
            <asp:LinkButton ID="btn_last" runat="server">末页</asp:LinkButton>
            &nbsp;&nbsp;
            <asp:DropDownList ID="DropDownList1" AutoPostBack="true" runat="server"></asp:DropDownList>
            <asp:Button ID="Button1" runat="server" Text="跳转" />


        </div>
    </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 _Default : System.Web.UI.Page
{
    int Count = 5; //每页显示条数

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Label_NowPage.Text = "1";
            Label_MaxPage.Text = MaxPageNumber().ToString();
            btn_prev.Enabled = false;
            btn_first.Enabled = false;

            Repeater1.DataSource = new CarData().Select(Count, 1);
            Repeater1.DataBind();


            int max = MaxPageNumber();
            DropDownList1.Items.Clear();
            for (int i = 1; i <= max; i++)
            {
                DropDownList1.Items.Add(new ListItem(i.ToString(), i.ToString()));
            }
        }



        DropDownList1.SelectedIndexChanged += Button1_Click;
        btn_first.Click += btn_first_Click;//首页按钮
        btn_prev.Click += btn_prev_Click;
        btn_next.Click += btn_next_Click;
        btn_last.Click += btn_last_Click;
        Button1.Click += Button1_Click;
    }

    void Button1_Click(object sender, EventArgs e)
    {
        //获取当前页,计算要看的下一页的页号
        int nextPage = Convert.ToInt32(DropDownList1.SelectedValue);

        //按照获取的页数绑定相应的数据
        Repeater1.DataSource = new CarData().Select(Count, nextPage);
        Repeater1.DataBind();

        //修改显示页数
        Label_NowPage.Text = nextPage.ToString();

        if (nextPage == 1)
        {
            btn_first.Enabled = false;
            btn_prev.Enabled = false;
            btn_next.Enabled = true;
            btn_last.Enabled = true;
        }
        else if (nextPage == MaxPageNumber())
        {
            btn_first.Enabled = true;
            btn_prev.Enabled = true;
            btn_next.Enabled = false;
            btn_last.Enabled = false;
        }
        else
        {
            btn_first.Enabled = true;
            btn_prev.Enabled = true;
            btn_next.Enabled = true;
            btn_last.Enabled = true;
        }
    }

    void btn_first_Click(object sender, EventArgs e)
    {
        //按照获取的页数绑定相应的数据
        Repeater1.DataSource = new CarData().Select(Count, 1);
        Repeater1.DataBind();

        //修改显示页数
        Label_NowPage.Text = "1";


        btn_first.Enabled = false;
        btn_prev.Enabled = false;
        btn_next.Enabled = true;
        btn_last.Enabled = true;
    }

    void btn_prev_Click(object sender, EventArgs e)
    {
        //获取当前页,计算要看的下一页的页号
        int nextPage = Convert.ToInt32(Label_NowPage.Text) - 1;

        //按照获取的页数绑定相应的数据
        Repeater1.DataSource = new CarData().Select(Count, nextPage);
        Repeater1.DataBind();

        //修改显示页数
        Label_NowPage.Text = nextPage.ToString();

        if (nextPage <= 1)
        {
            btn_first.Enabled = false;
            btn_prev.Enabled = false;
        }
        btn_next.Enabled = true;
        btn_last.Enabled = true;
    }

    void btn_next_Click(object sender, EventArgs e)
    {
        //获取当前页,计算要看的下一页的页号
        int nextPage = Convert.ToInt32(Label_NowPage.Text) + 1;

        ////判断是否有下一页
        //if (nextPage > MaxPageNumber())
        //{
        //    return;
        //}

        //按照获取的页数绑定相应的数据
        Repeater1.DataSource = new CarData().Select(Count, nextPage);
        Repeater1.DataBind();

        //修改显示页数
        Label_NowPage.Text = nextPage.ToString();

        if (nextPage >= MaxPageNumber())
        {
            btn_next.Enabled = false;
            btn_last.Enabled = false;
        }
        btn_prev.Enabled = true;
        btn_first.Enabled = true;
    }

    void btn_last_Click(object sender, EventArgs e)
    {
        int hehe = MaxPageNumber();

        //按照获取的页数绑定相应的数据
        Repeater1.DataSource = new CarData().Select(Count, hehe);
        Repeater1.DataBind();

        //修改显示页数
        Label_NowPage.Text = hehe.ToString();


        btn_prev.Enabled = true;
        btn_first.Enabled = true;
        btn_next.Enabled = false;
        btn_last.Enabled = false;
    }


    public int MaxPageNumber()
    {
        List<Car> clist = new CarData().Select();

        double end2 = Math.Ceiling(clist.Count / (Count * 1.0));

        int end = Convert.ToInt32(end2);

        return end;
    }



}
后台
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;

/// <summary>
/// CarData 的摘要说明
/// </summary>
public class CarData
{
    SqlConnection conn = null;
    SqlCommand cmd = null;
    public CarData()
    {
        conn = new SqlConnection("server=.;database=mydb;user=sa;pwd=123");
        cmd = conn.CreateCommand();
    }

    public List<Car> Select()
    {
        List<Car> clist = new List<Car>();

        cmd.CommandText = "select *from car";
        conn.Open();
        SqlDataReader dr = cmd.ExecuteReader();

        if (dr.HasRows)
        {
            while (dr.Read())
            {
                Car c = new Car();
                //c.Ids = Convert.ToInt32(dr[0]);
                c.Code = dr[0].ToString();
                c.Name = dr[1].ToString();
                c.Brand = dr[2].ToString();
                c.Time = Convert.ToDateTime(dr[3]);
                c.Oil = Convert.ToDecimal(dr[4]);
                c.Powers = Convert.ToInt32(dr[5]);
                c.Exhaust = Convert.ToInt32(dr[6]);
                c.Price = Convert.ToDecimal(dr[7]);
                c.Pic = dr[8].ToString();

                clist.Add(c);
            }
        }

        conn.Close();
        return clist;
    }




    public List<Car> Select(int count, int NowPage)
    {
        List<Car> clist = new List<Car>();

        cmd.CommandText = "select top " + count + " *from car where Code not in(select top " + ((NowPage - 1) * count) + " Code from car)";
        conn.Open();
        SqlDataReader dr = cmd.ExecuteReader();

        if (dr.HasRows)
        {
            while (dr.Read())
            {
                Car c = new Car();
                //c.Ids = Convert.ToInt32(dr[0]);
                c.Code = dr[0].ToString();
                c.Name = dr[1].ToString();
                c.Brand = dr[2].ToString();
                c.Time = Convert.ToDateTime(dr[3]);
                c.Oil = Convert.ToDecimal(dr[4]);
                c.Powers = Convert.ToInt32(dr[5]);
                c.Exhaust = Convert.ToInt32(dr[6]);
                c.Price = Convert.ToDecimal(dr[7]);
                c.Pic = dr[8].ToString();

                clist.Add(c);
            }
        }

        conn.Close();
        return clist;
    }


}
数据访问类

另:

常规表单提交:

  普通HTML页面,在form表单中action属性可以设置提交到哪个服务端 method属性可以选择提交方式

<form action="Default4.aspx" method="get"></form>

  可以通过此方法将纯HTML页面中的数据提交到某个服务端,再通过服务端对数据进行操作。

 

posted @ 2017-01-04 15:54  苏迁时  阅读(179)  评论(0编辑  收藏  举报