ASP.NET经典范例50讲读书笔记
* 事件模型先模访再明白自已的意思,然后就会习惯
* html的dom模型支持详尽的客户端事件
* asp.net页面事件
Init事件[Web页继承自System.Web.UI.Page,本事件相当于类构造完成后立刻引发的一个事件...用于对象初使化工作]
,Load事件[IsPostBack] AutoEventWrieup属性自动将Load事件与Page_Load()方法关联起来-lesson3事件绑定机制
,Unload事件[在页面被发送后发生..关闭数据库连接,读写文件操作]
*@@@AJAX是否是在客户端的JavaSript与Xml联用?可用于保存页面配置
和初使化一下界面操作(当ASP.net页面还没有加载时,可用来显示本地中已存在的文件,如图片和一些其它 的东西)
* 关联事件 可在页面初使化的时候用"+="绑定,还可以在
<asp:textBox id="TextBox1" onChanged="onChange"/>
第十四章---21ASP.NET页面框架
本章说明了apsx页面和codebehinde模式的工作原理.
下面是要查的一点东西:怎么样看asp.net源文件自己动生成的源文件(类似jsp中的servlet)
:
本章说明了,就是说aspx页面文件与对应的codebehinde文件是一个继承的关系,如果可以的话可以去看asp.net自动生成的源文件,变量可以在codebehinde声明 ,aspx 页因为继承了codebehinde的cs文件,故可调用其中的方法还有属性..
第十五章,
#硬编码从hashtable中读数据到Reatper控件实现绑定
#在aspx页面中让服务器控件触发事件(这个事件在aspx页面声明并实现)---goods.aspx
用cookie实现页面传值
#利用Tansfer方法实现页面之间的传值
第十六章,
#dll组件编程和事件的小demo
#程序集的密钥对的生成
第十七章:复合控件的开发
#控件树的生成,
#loadViewState 和SaveViewState方法是控件用来保存viewState从Control类继承下来的方法
这样就能在页面切换之保存自己的数据了(可用来做页面间传值,在这两个方法中可以将有意义的值放在HashTable中缓存在Application中)
#button的 Click事件和button的Command事件的相对应的参数可在自己定义事件和复合控件中使用
#事件冒泡技术
如果子控件没有相应的事件处理程序,则这个事件 冒泡到上一级控件,就是控件树的父结点
OnBubbleEvent 确定服务器控件的事件是否沿页的 UI 服务器控件层次结构向上传递。
RaiseBubbleEvent 将所有事件源及其信息分配给控件的父级。
有一个小例子说明父控件来执行子控件的事件
详见vs2003帮助
第十八章,自定义控件的开发--处理数据和引发事件
#服务器控件的生命周期
#事件的处理和回发
#在自定义事件中要和微软的那种可重载的虚拟函数引发的事件模式,在对象组件结构中用得非学多,我们做自己的事件也要用这种风格,如下:
protected override void Load(EventArgs e)
{
//写必要的程序
//......
//如果需要的话就触发基类方法的事件
//if(flag)
{
base.OnLoad(e);
}
}
IPostBackDatahandler接口负责编码发送.自定义控件为了得到这些数就要实现在IPostBackDataHandler接口.Asp.net接到客户端浏览器传来的数据刚依次去检查控件树中的每一个控件,看哪个实现了IPostBackDataHandler接口,如果实现了就向LoadPsotData()函数传值
public bool LoadPoastData(string postDataKey ,NameVAlueCollection postCollection)
这个事件虽然比内容更改事件(如TestBox的TextChange事件)早发生,但是不会在这个事件方法中去触发TestChange事件,因为浏览器向服务器传值是多波的,不能只是为了处理一个方法去停止事件
#自定义组件的小例子"MyTables.cs"
//自己定义事件处理方法,可以被子类调用,所以作成虚的
public delegate void InvalidHandler(object sender, InvalidEventArgs e);
public event InvalidHandler Invalid;
public virtual void OnInvalid(InvalidEventArgs arg)
{
if(Invalid != null)
Invalid(this, arg);
}
在aspx页面中(本页面会继承asp.net自动生成的cs文件,这样就会继承了上面的那个事件 的方法,这样就可以在子类中去重写[这个方法)
如下:
在MyTable.aspx中
<script language="C#" runat="server" >
void Page_Load()
{
Label1.Text = "";
}
void OnInvalid(object sender, InvalidEventArgs arg)
{
Label1.Text = "单元格(" + arg.Row.ToString() + "," +
arg.Column.ToString() + ")的内容不正确";
}
</script>
第十九章,页面的状态和事件
# asp.net 应用程序的概念是一个广义的,一般就是指一个iis虚拟目录中的所有的资源
global.asax文件中的方法的说明
# HttpApplication 类
定义 ASP.NET 应用程序中的所有应用程序对象通用的方法、属性和事件。此类是由用户在 global.asax 文件中定义的应用程序的基类。
#Asp.net 的会话状态通过Session对象提供,Session对象类型其实是Syatem.Web.SessionState.HttpSessionState.这类数据据存取相当于一个HashTable.程序员可以把一切的对象放到Application中去,并添加一个字符串作为访问这个对象的索引值
二十章到二十八章是Asp.net应用程序的配置和webconfig文件的操作,还有iis的设置,如到*.asp.net的应射在CnBlog中有应用
第二十九章,在自定义控件中使用客户端脚本
如果想保存自定义的控件的状态又想让客户端的脚本访问到自定义控件的属性值,则可以
用System.Web.UI.Page类在页面中加入一个隐藏域的方法RegisterHiddenFiled();
这个方法常常在自己定义控件的OnPreRander方法中完成.如果引用现有的控件,则在Page_Load方法中完成
将客户端的事件当作服务器瑞事件来运行机制,则在客户端脚本中加入一个page类提供的方法,
GetPostBackEventRefenrence(); ----------P311
第三十八讲和第三十九讲有dataGrid和dataView的自定义分页的Demo