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