首先要说的是这两个事件的发生时间。
ItemDataBound嘛,只要执行了DataBind方法,就会马上激发这个事件。
ItemCreated呢,如果页面是第一次访问(Page.IsPostBack = false),那在第一次执行DataBind的时候,会先激发ItemCreated事件,也就是说,执行了DataBind后,首先会用ItemCreated来建立Header行,然后用ItemDataBound来绑定Header行,再用ItemCreated来建立第一行,再调用ItemDataBound来绑定第一行,也就是说ItemCreated和ItemDataBound是交替执行的。
页面返回时,也会执行ItemCreated事件,在Page_Load之前,但是这时候就不会再执行ItemDataBound事件了。
由于以前不知道这两个区别,今天做一个功能的时候使用了ItemCreated事件,当页面某个按钮导致页面PostBack时,就会报错。以后为避免导致不必要的麻烦,要注意多用ItemDataBound,少用ItemCreated事件。
ItemCreated //建立控件
ItemDataBound //绑定数据
ItemCommand //这个是用户触发
当创建 DataGrid 控件中的项时(不论是在往返行程中还是在将数据绑定到控件时),都会引发 ItemCreated 事件。
ItemCreated 事件通常用于控制 DataGrid 控件中行的内容和外观。
当项被数据绑定到 DataGrid 控件后,将引发 ItemDataBound 事件。此事件为您提供了在客户端显示数据项之前访问该数据项的最后机会。当引发此事件后,该数据项将被设为空,并且不再可用。
当单击 DataGrid 控件中的任一按钮时会引发 ItemCommand 事件。此事件常用于处理在 DataGrid 控件中具有自定义 CommandName 值(如 Add)的按钮控件。