“theform._eventtarget 为空或者不是对象”,解决办法
| 當(dāng)點(diǎn)擊按鈕(服務(wù)器控件按鈕)時(shí),沒(méi)有反應(yīng)了,點(diǎn)窗口左下角(狀態(tài)條)的黃嘆號(hào),提示 theform._eventtarget 為空或者不是對(duì)象 很是奇怪,本來(lái)好好的,怎么突然變成這樣了。由于之前改了很多東西,也不記是動(dòng)了哪里成了這樣了。 查看網(wǎng)頁(yè)的源碼(從瀏覽器右鍵中“查看源代碼”,不是aspx的源碼),可以看到aspx頁(yè)面生成的HTML與Javascript代碼,如下代碼值得關(guān)注; <script type="text/javascript"> _doPostBack方法太熟悉了,這是個(gè)曝光率很高的方法,不是在程序中曝光,是在網(wǎng)上,多次被人提到,這是服務(wù)器控件(到了客戶端后也只是普通HTML控件)調(diào)用服務(wù)器端方法的javascript指令。 在_doPostBack方法中,用到了theForm變量,這就是在錯(cuò)誤提示中提到的“theForm.__EVENTTARGET”,它為空,噢,看看為什么; thisForm從哪里來(lái)的呢? theForm就是表單form1呀,我們知道幾乎在每個(gè)aspx頁(yè)面中,都會(huì)有一個(gè),且唯一的一個(gè)form表單,<form id="form1" runat="server"> 它的id一般是from1;它是服務(wù)器控件。我們很少會(huì)改動(dòng)它的。而現(xiàn)在,它找不到了,所以theForm變量才為空。 繼續(xù)查看 很顯然,form1是存在的呀,可為什么找不到呢,我搜索了一下"form1",結(jié)果,查出來(lái)兩個(gè),呵呵。問(wèn)題搞清楚了。 那一個(gè)form表單是用于搜索的,僅用于搜索框,它并不是報(bào)務(wù)器控件;但是它的id卻也叫form1(默認(rèn)的,沒(méi)有改),這當(dāng)然不行,就把它的id隨便改了一個(gè)。就OK 。問(wèn)題解決。 這個(gè)問(wèn)題并沒(méi)有給我?guī)?lái)太多障礙,只所以還拿出來(lái)說(shuō)說(shuō),主要是說(shuō)說(shuō)解決思路。另外建議一下,就是除了服務(wù)器表單,其它的表單不要與這個(gè)form1表單重名;(服務(wù)器表單只能一個(gè),而HTML表單卻可以有多個(gè),這并不沖突)。 當(dāng)然了,表單元素是不可以嵌套的, |
2、GridView.PageSize設(shè)置合適的每頁(yè)顯示數(shù);
3、添加GridView.PageIndexChanging事件,為GridView設(shè)置新的PageIndex并且重新綁定數(shù)據(jù)。 但是嘗試過(guò)了都依然沒(méi)用。最后還是自己找到原因了,原來(lái)是Form ID搞的鬼~
每個(gè)ASPX網(wǎng)頁(yè)都會(huì)加入一個(gè)默認(rèn)ID為"form1"的Form,我想是為了實(shí)現(xiàn)PostBack而設(shè)置的吧。由于我要給每頁(yè)都加同一個(gè)導(dǎo)航頭,因此我做了個(gè)Header.aspx,為每個(gè)ASPX(此處假設(shè)為Somepage.aspx)的OnLoad事件都加上: 程序代碼 Server.Execute("Header.aspx"); 于是,問(wèn)題來(lái)了~
Header.aspx內(nèi)的Form ID和Somepage.aspx內(nèi)的Form ID同為"form1",造成了Somepage.aspx內(nèi)的GridView執(zhí)行Javascript:__doPostBack失敗。
解決方案:很簡(jiǎn)單,把Header.aspx的Form ID改掉就好了~
轉(zhuǎn)載于:https://www.cnblogs.com/zhangbinghe/archive/2009/08/11/1543896.html
總結(jié)
以上是生活随笔為你收集整理的“theform._eventtarget 为空或者不是对象”,解决办法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Makefile与Shell的问题
- 下一篇: 电力计算