當我們開啟檢視原始碼時可以發現,所有的Web控制項都是透過網頁上的同一個doPostBack含式來處理PostBack動作,
而該函式利用「eventTarget」參數,來判斷引發該PostBack動作的是哪一個Web控制項,此外透過「eventArgument」
傳入其他額外的參數。
private void Page_Load(object sender, System.EventArgs e)
{
lbcal.Attributes["OnClick"]= this.GetPostBackEventReference(this.Button3);
if(Request.Form["__EVENTTARGET"]==Button3.UniqueID)
UserDefineEvent();
btnNewWindow.Attributes["OnClick"]="window.open('http://www.kimo.com.tw')";
}
private void UserDefineEvent()
{
Response.Write("I got it!");
}
我們首先定義了一個label物件叫做 lbcal,然後透過lbcal.Attributes["OnClick"]去實作觸發OnClick時的事件。
另外,GetPostBackEventReference( )是用來告知這次的PostBack是由那個物件所觸發的。在範例中,我們指定按下
lbcal標籤時,告知系統這是Button3所觸發的(當然,我們也可以用this.lbcal來代替,只是現在是用"借刀殺人")。
在Page_Load事件中,我們還有透過Request.Form["__EVENTTARGET"]來抓取到底是誰觸發這次PostBack的資訊。
2007年8月9日 星期四
訂閱:
張貼留言 (Atom)
感謝您所分享的文章,不過我還有點疑問
回覆刪除如果今天我要lbcal不只可以window.open的動作呢
例如是Datasource或Gridview等
( 假設有lbcal2.lbcal3分別也做不同功能 )
是不是也需要每一個lbcal都給它通通各給一次onclick事件?
如果大大能撥空回答,必感謝萬分!~
祝 一切順心