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 = ; //每页显示条数 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Label_NowPage.Text = "";
Label_MaxPage.Text = MaxPageNumber().ToString();
btn_prev.Enabled = false;
btn_first.Enabled = false; Repeater1.DataSource = new CarData().Select(Count, );
Repeater1.DataBind(); int max = MaxPageNumber();
DropDownList1.Items.Clear();
for (int i = ; 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 == )
{
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, );
Repeater1.DataBind(); //修改显示页数
Label_NowPage.Text = ""; 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) - ; //按照获取的页数绑定相应的数据
Repeater1.DataSource = new CarData().Select(Count, nextPage);
Repeater1.DataBind(); //修改显示页数
Label_NowPage.Text = nextPage.ToString(); if (nextPage <= )
{
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) + ; ////判断是否有下一页
//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[].ToString();
c.Name = dr[].ToString();
c.Brand = dr[].ToString();
c.Time = Convert.ToDateTime(dr[]);
c.Oil = Convert.ToDecimal(dr[]);
c.Powers = Convert.ToInt32(dr[]);
c.Exhaust = Convert.ToInt32(dr[]);
c.Price = Convert.ToDecimal(dr[]);
c.Pic = dr[].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 - ) * 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[].ToString();
c.Name = dr[].ToString();
c.Brand = dr[].ToString();
c.Time = Convert.ToDateTime(dr[]);
c.Oil = Convert.ToDecimal(dr[]);
c.Powers = Convert.ToInt32(dr[]);
c.Exhaust = Convert.ToInt32(dr[]);
c.Price = Convert.ToDecimal(dr[]);
c.Pic = dr[].ToString(); clist.Add(c);
}
} conn.Close();
return clist;
} }

数据访问类

weibform中Application、ViewState对象和分页

另:

常规表单提交:

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

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

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

上一篇:轻松解决oracle11g 空表不能exp导出的问题


下一篇:Android设计中的.9.png与Android Studio中的设置