但跑出的結果,卻讓人噴飯 >_<
「無效的回傳或回呼引數」,這就是美麗的代價嗎?
我本來是要做上圖的功能,透過 Repeater ,並在每一個資料列中放「刪除」按鈕,執行刪除後就會重新更新一次資料。
所以在 Page_Load( ) 事件,就沒有將繫結 Repeater 的動作包在 if(!IsPostBack) 的判斷式中。我曾經試著用錯誤畫面裡的建議,將 <%@ Page 裡的 EnableEventValidation 屬性設為 false 。雖然這動作可以避免產生「無效的回傳或回呼引數」錯誤訊息,但是原先針對「刪除」按鈕的事件動作卻變成不會被觸發,真是折磨人啊!
我決定,要去抓個墊背來試試...
我就棄 ImageButton 改用 Button 試試。發現他一樣有這種現象。
接著測試 LinkButton ,成功了!這三個Button 兄弟,總算有一個有出息,沒有全軍覆沒。
可是,使用 LinkButton,有沒有辦法放圖呢?於是,把腦筋動到他的 Text 屬性,把 <img src=btn_delete2.jpg border=0 /> 寫到 Text 屬性裡,發現竟然可以哩~
今天發生的這種現象,並非只存在於 Repeater ,DataList 、 GridView 也是都這樣。為何以前自己沒注意到有這現象發生,這就在於繫結資料的動作,以前我都習慣將他放到 if(!IsPostBack) 判斷式裡,還有另一種可能,就是 ... 程式寫太少啦,你這懶鬼 !!!
測試檔案下載
網路上相同受害者
嗯,好像沒注意到會發生這種錯耶!!真厲害。
回覆刪除但我的做法,都還是會將繫結的動作放在 if(!IsPostBack)裡,
只是都另外包成一個「BindData()」的fun,當按了刪除按鈕後~~再重新呼叫一次BindData(),以達到此效果。
剛好有個機會,是 Repeater 裡包 asp:checkbox ,同時也將他的 autopostback 設為 true。此時如果再把這 repeater 的 databind 動作移到 if(!IsPostBack) 外面,同樣也會出現上面的錯誤訊息
回覆刪除