Application:

全局公共变量组

  存放位置:服务器

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

     成服务器崩溃。

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

  使用方法:与Session一样

___________________________________________________________________________________________________________________________

Viewstate:

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

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

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

___________________________________________________________________________________________________________________________常规表单提交:

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

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

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

___________________________________________________________________________________________________________________________

分页功能:

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

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

  例:分页展示车辆信息管理

1.界面层

<%@ 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; ">
<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="">
<%--<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> 2.后台代码:
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;
} }
3,数据访问类:
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;
}
}
4.最后呈现的效果如图所示:

												

WebForm Application Viewstate 以及分页(功能性的知识点)的更多相关文章

  1. Webform Application传值 ViewState

    Application:所有的会话共享一个Application空间,任何一个人改变Application的内容,其他人都会发现被改变了.Application中的内容不会被自动释放 存放位置:服务端 ...

  2. Webform Application、ViewState

    Application(全局对象) Application对象生存期和Web应用程序生存期一样长,生存期从Web应用程序网页被访问开始,HttpApplication类对象Application被自动 ...

  3. webform组合查询和分页

    1.组合查询(1)数据访问类 //参数1:SQL语句 参数2:哈希表public List<Users> chas(string s,Hashtable has) { List<Us ...

  4. Web端 session cookies Application viewstate

    URL传值/QueryString1.不占用服务器内存2.保密性差,传递值的长度有限 因为  上篇文章 保密性差,长度有限   传值有限只能传string类型的值 这篇文章学的知识是 session ...

  5. weibform中Application、ViewState对象和分页

    Application: 全局公共变量组 存放位置:服务器 特点:所有访问用户都是访问同一个变量,但只要服务器不停机,变量一直存在于服务器的内存中,不要使用循环大量的创建Application对象,可 ...

  6. 在MVC3中使用WebForm

    Mvc和WebForm一直是有争议的两个平台,园子里也有很多人写过这方面的文章,给我印象比较深的是去年的时候看过的两篇文章http://www.cnblogs.com/mikelij/archive/ ...

  7. bootstrapTable服务器端分页

    bootstrap table加载:无论是服务器分页还是客户端分页,重新加载表格前请一定先销毁!销毁!销毁!  !!销毁表格:: 客户端分页: 1. 表格销毁 $('#tableID').bootst ...

  8. SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页

    SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页 **SpringBoot+Mybatis使用Pagehelper分页插件自动分页,非常好用,不用在自己去计算和组装了. ...

  9. ThinkPHP5自定义分页样式

    1.在thinkphp/library/think/paginator/driver目录下新建文件Page.php 注意命名空间和继承 <?php namespace think\paginat ...

随机推荐

  1. Swift:闭包

    一.闭包的介绍 闭包表达式(Closure Expressions) 尾随闭包(Trailing Closures) 值捕获(Capturing Values) 闭包是引用类型(Closures Ar ...

  2. Django 中url补充以及模板继承

    Django中的URL补充 默认值 在url写路由关系的时候可以传递默认参数,如下: url(r'^index/', views.index,{"name":"root& ...

  3. SD卡读写一些函数

    /SPI2 读写一个字节 //TxData:要写入的字节 //返回值:读取到的字节 u8 SPI2_ReadWriteByte(u8 TxData) { u16 retry=0;   while((S ...

  4. Spting--DI/IOC

    DI/IOC <bean> 代表由容器构建的对象(通过反射构建,且类必须有无参的构造方法)  公共属性 id="唯一的id" 在容器中是唯一的 name="类 ...

  5. c++友元函数

    c++友元函数分两类: 一://友员全居函数 /*#include <iostream>using namespace std;class aaa{    friend void prin ...

  6. 纯html、css3、js的时钟

    之前在网上看了一些使用js写的时钟,但感觉实现的方法有点麻烦,所以就自己重新写了一个例子,样子有点丑,但方法比较简单,大家就凑合看吧 其中采用的主要方法是原生js里面的Data(时期)对象,以及它的. ...

  7. Gulp自动添加版本号(转载)

    本文转载自: gulp自动添加版本号

  8. 阿里云推荐码 hut29f

    阿里云 推荐码 hut29f,适用于新手首次购买.

  9. 夺命雷公狗----Git---1---安装步骤

    除了上面的路径修改一下,别的都用默认的问题即可解决.....

  10. Server.MapPath和Request.PhysicalApplicationPath的异同

    很多人对它们都不陌生,在众多的WEB程序中,使用Server.MapPath和Request.PhysicalApplicationPath来操作目录/文件的几率参半,我曾经也经常混用,然而时间久了. ...