?
昨天下定決 心對(duì)上次做的布局編輯器控件加以改進(jìn),其中最主要變化的就是要完全使用ASP.NET AJAX!但是很遺憾,雖然耳聞已久,但目前對(duì)ASP.NET AJAX的熟悉程度實(shí)在令人汗顏,而且有一段時(shí)間沒有怎么關(guān)注了,以前學(xué)會(huì)的那點(diǎn)皮毛也忘得差不多了,不過(guò)即使從頭開始也沒什么大不了的。雖然決心很大, 不過(guò)剛拿起UpdatePanel它就給了我一個(gè)下馬威,實(shí)在有夠郁悶的!
就 是下面很簡(jiǎn)單的一段代碼,意圖很簡(jiǎn)單,動(dòng)態(tài)創(chuàng)建一個(gè)UpdatePanel,然后在其中放置一個(gè)LinkButton!(為了做對(duì)比,我在 UpdatePanel外面也放置了一個(gè)LinkButton)按照以前的經(jīng)驗(yàn),這就是實(shí)現(xiàn)局部刷新所需的全部工作了,而且ASP.NET AJAX 1.0中,UpdatePanel的ChildrenAsTriggers屬性默認(rèn)true,也就是說(shuō)UpdatePanel中的LinkButton自 動(dòng)成為觸發(fā)器。
?2 ? {
?3 ? ????protected?override? void ?OnInit(EventArgs?e)
?4 ? ????{
?5 ? ????????base.OnInit(e);
?6 ?
?7 ? ????????UpdatePanel?p1? = ? new ?UpdatePanel();
?8 ? ????????p1.ID? = ? " MyUpdatePanel " ;
?9 ?
10 ? ????????LinkButton?lbInside? = ? new ?LinkButton();
11 ? ????????lbInside.Text? = ? " Inside?updatepanel " ;
12 ? ????????p1.ContentTemplateContainer.Controls.Add(lbInside);
13 ? ???????? this .PlaceHolder1.Controls.Add(p1);
14 ?
15 ? ????????LinkButton?lbOutside? = ? new ?LinkButton();
16 ? ????????lbOutside.Text? = ? " Outside?updatepanel " ;
17 ? ???????? this .PlaceHolder1.Controls.Add(lbOutside);
18 ? ????}
19 ? }
可是運(yùn)行結(jié)果卻讓我大跌眼鏡(雖然我不帶眼鏡,呵呵), 點(diǎn)擊“Inside updatepanel”并沒有像我想的那樣局部刷新,而是刷新了整個(gè)頁(yè)面,出現(xiàn)的瀏覽歷史記錄就是明證 !而點(diǎn)擊設(shè)計(jì)期添加的那個(gè)LinkButton則完全正常!

到了這里,出于對(duì)MS的一貫信任,我不禁懷疑起自己的智商來(lái),那么一小段代碼居然會(huì)有問題,難道我年紀(jì)輕輕就老年癡呆了???天哪!我戰(zhàn)戰(zhàn)兢兢查看了一下頁(yè)面源碼:

嗯,細(xì)看之下果然有點(diǎn)區(qū)別,那些“ctlXXX”無(wú)疑是自動(dòng)生成的ID,但是我怎么就沒看到對(duì)應(yīng)的id屬性呢?難道就是它們?cè)诟愎恚糠凑礼R做活馬醫(yī),加上ID再說(shuō),再次運(yùn)行,果然,一切搞定,哈哈~~~(旁白:果然是老年癡呆,至于笑成這樣嘛!!!)
?2 ? {
?3 ? ????protected?override? void ?OnInit(EventArgs?e)
?4 ? ????{
?5 ? ????????base.OnInit(e);
?6 ?
?7 ? ????????UpdatePanel?p1? = ? new ?UpdatePanel();
?8 ? ????????p1.ID? = ? " MyUpdatePanel " ;
?9 ?
10 ? ????????LinkButton?lbInside? = ? new ?LinkButton();
11 ? ???????? lbInside.ID? =?"lbInside" ;
12 ? ????????lbInside.Text? = ? " Inside?updatepanel " ;
13 ? ????????p1.ContentTemplateContainer.Controls.Add(lbInside);
14 ? ???????? this .PlaceHolder1.Controls.Add(p1);
15 ?
16 ? ????????LinkButton?lbOutside? = ? new ?LinkButton();
17 ? ????????lbOutside.Text? = ? " Outside?updatepanel " ;
18 ? ???????? this .PlaceHolder1.Controls.Add(lbOutside);
19 ? ????}
20 ? }
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
