最開始的方式:
protected void page_load(object sender, eventargs e)
{
if(!ispostback)
{
string ctr = "<asp:textbox runat='server' id='haha' text='button' />";
control ctrl = page.parsecontrol(ctr);
placeholder1.controls.add(ctrl);
}
}
添加控件成功,但是當客戶端回發時,上面寫法會導致新增加的控件不見了。當然如果去掉ispostback控件不會消失,但是每次客戶端回發時都添加控件明顯會造成不必要的資源浪費。如何解決呢?
需要看一下page的生存周期。這里只講一下我們需要的,不需要的大家自己看一下(推薦本書吧《asp.net2.0技術內幕》,姊妹篇《asp.net2.0高級編程》)
preinit-->init-initcomplete->load.........
preinit在頁初始化開始時發生。
init當服務器控件初始化時發生;初始化是控件生存期的第一步。
initcomplete在頁初始化完成時發生。
load當服務器控件加載到 page 對象中時發生。
好了,我們可以繼續我們的行動了
protected void page_init(object sernder, eventargs e)
{
string ctr = "<asp:textbox runat='server' id='haha' text='button' />";
control ctrl = page.parsecontrol(ctr);
placeholder1.controls.add(ctrl);
}
ok。
自己測試一下吧。
新聞熱點
疑難解答
圖片精選