自定義控制項的事件根據需要有兩種方式來引發
1繼承ipostbackdatahandler 介面
實現
boolloadpostdata(string postdatakey, namevaluecollection postcollection);
voidraisepostdatachangedevent();
兩個方法,大致都是這樣
boolipostbackdatahandler.loadpostdata(string postdatakey, namevaluecollection postcollection)
return false;
}voidipostbackdatahandler.raisepostdatachangedevent()
2 繼承ipostbackeventhandler 介面
實現voidraisepostbackevent(string eventargument);
方法大致實現方法:
voidipostbackeventhandler.raisepostbackevent(string eventargument)
//給html控制項註冊指令碼.表明回發
我要使用 __dopostback(eventtarget, eventargument) 這個方法進行處理.
這個方法進行註冊如下:
...attributes.add("onclick", this.page.getpostbackclientevent(this, eventargument));
如:button的:
protectedvirtual
voidraisepostbackevent(string eventargument)
this.onclick(eventargs.empty);
this.oncommand(new
commandeventargs(this.commandname, this.commandargument));
}
他註冊的 事件指令碼 在這個方法裡面
protected
override
voidaddattributestorender(htmltextwriter writer)
看**:
1private
void
processpostdata(namevaluecollection postdata,
bool
fbeforeload)27
if(postdata
!=null)8
15control control
=this
.findcontrol(str);
16if
(control
==null)17
24this
._leftoverpostdata.add(str,
null
);25}26
continue;27
}28ipostbackdatahandler postbackdatahandler
=control.postbackdatahandler;
29if
(postbackdatahandler
==null)30
35}36else
3742if(
this
._controlsrequiringpostback
!=null)43
46}47}
48}49arraylist list
=null;50
if(this
._controlsrequiringpostback
!=null)51
62if
(handler2
==null)63
));65}66
if(handler2.loadpostdata(str2,
this
._requestvaluecollection))
6770
continue;71
}72if(fbeforeload)
7378
list.add(str2);79}
80}81this
._controlsrequiringpostback
=list;82}
83}8485
1internal
void
raisechangedevents()215
}16}17
}18}19
2021221
private
void
raisepostbackevent(namevaluecollection postdata)27
else818
if((control
!=null
) &&
(control.postbackeventhandler
!=null
))1923}
24else
2528}29
}3031
自定義控制項的事件
之前做了一些自定義控制項 user control 有一些內部控制項的事件想要發布出來,但是查了一下文件,發現一篇文章裡面寫的方法非常複雜,又是要委託,又是要註冊的,反正看得暈暈乎乎的,乾脆就放棄了。今天又遇到了這個問題,得到建軍的幫助,解決啦,發現非常簡單啊。貼個例子在下面 public even...
C 自定義控制項和自定義事件
今天在專案開發的過程中,因為好幾個頁面都要用到同乙個分類控制項,就想著把它做成乙個自定義控制項,然後隨託隨用。在網上找了些列子,自定義控制項的寫法不用多說,主要說一下,如何將控制項的事件,封裝到自己定義的控制項的自定義事件裡面。這裡同時也當作對自定義事件的乙個複習吧。首先控制項是乙個由treelis...
自定義控制項新增事件
事件,委託,總是看起來有點繞,不過本文不介紹這些,只說說如何為自定義控制項新增自定義事件。本文所說的自定義控制項,非繼承其他現有microsoft控制項或者組合控制項,而是完全繼承usercontrol的東西。既然不是繼承自其他現有控制項或者控制項組合,在特定需求下,有新增自定義事件的可能性,或者對...