2017-5-22 Asp.Net内置对象2和RepeaterCommand用法
(一)内置对象
1.Application
储存在服务端,占用服务器内存,生命周期永久
所有人访问的都是一个对象
用法:页面之间额传值
protected void Page_Load(object sender, EventArgs e) { Button1.Click += Button1_Click; } void Button1_Click(object sender, EventArgs e) { Application["aa"] = TextBox1.Text; Response.Redirect("Default2.aspx"); }
接收页面:
Label1.Text = Application["aa"].ToString();
对象特征:
存储的物理位置:服务器内存。
存储的类型限制:任意类型。
状态使用的范围:整个应用程序。
存储的大小限制:任意大小。
生命周期:应用程序开始的时候创建(准确来说是用户第一次请求某URL的时候创建),应用程序结束的时候销毁。
安全与性能:数据总是存储在服务端,安全性比较高,但不易存储过多数据。
优缺点与注意事项:检索数据速度快,但缺乏自我管理机制,数据不会自动释放。
常用的属性和变量:
All | 返回全部的Application对象变量到一个对象数组 |
AllKeys | 返回全部的Application对象变量到一个字符串数组 |
Count | 取得Application中对象变量的数量 |
Item | Application变量名称传回的内容值 |
Add | 新增一个Application变量值 |
Clear | 清空全部Application变量值 |
Get | 变量名传回的变量值 |
Set | 更新Application变量值 |
Lock | 锁定所有Application变量值 |
UnLock | 解除锁定Application变量 |
2.ViewState
用于记录页面的一些Value,
GET:URL?表单元素Name=表单元素Value&表单元素Name=表单元素Value
webform中微软已经给我们做好了这个对象,自带此功能
(二)RepeaterCommand事件用法
1.在要触发的事件中添加属性CommandName="";方便在后台代码中区分点击的事件
CommandArgument='<%#Eval("ids") %>' 传递的参数,在后台代码通过e.CommandArgument;获取传递的参数
Repeater里面如果循环控件,控件的ID是会被改变的
ItemCommand事件 - 任何控件执行提交都来触发这个事件
属性 - CommandName=""
属性 - CommandArgument="主键值"
后台代码:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { List<Users> ulist = new UsersData().selectAll(); Repeater1.DataSource = ulist; Repeater1.DataBind(); } Repeater1.ItemCommand += Repeater1_ItemCommand; } void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) { //触发修改要操作的 if (e.CommandName == "update") { Label1.Text = "修改"; } //触发删除要操作的 else if(e.CommandName=="delete") { Label1.Text = "删除"; } }
2.Repeater控件中:数据创建的时候执行的事件 ItemCreated,数据绑定的时候执行的事件 ItemDataBound
ItemCreated - 绑定数据之前,创建行之后 ItemDataBound - 绑定数据之后,执行一遍
用法:
protected void Page_Load(object sender, EventArgs e) { Repeater1.ItemCommand += Repeater1_ItemCommand; //数据创建的时候 Repeater1.ItemCreated += Repeater1_ItemCreated; //数据绑定的时候 Repeater1.ItemDataBound += Repeater1_ItemDataBound; if (!IsPostBack) { List<Users> ulist = new UsersData().selectAll(); Repeater1.DataSource = ulist; Repeater1.DataBind(); } } //数据在绑定的时候执行,如果性别为女的不显示 void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { RepeaterItem ri = e.Item; Users u = ri.DataItem as Users; if (u.Sex == false) { ri.Visible = false; } }