事發於listview.edititem 屬性
msdn對此屬性的解釋:
型別:system.web.ui.webcontrols.listviewitem listview 控制項中處於編輯模式的項;或者,如果沒有項處於編輯模式,則為 null。
事發過程
我的頁面是這樣子的:
在listview中巢狀乙個repeater控制項顯示和編輯子表資料。
因為在update的時候listview不會幫我更新repeater中的資料,所以我需要在itemupdating事件中找到repeater控制項,再通過repeater控制項findcontrol找到每行的資料。
按msdn的說法,我可以這樣做:
protected
void listview1_itemupdating(object sender, listviewupdateeventargs e)
這樣基本沒問題,除非update的是listview的第一行。
如果update第一行,蟲子就出現了。
啟動debug,看下,edititem==null ???
不管是轉到第幾頁,就是只在更新第一行時出錯。
如果updata的不是第一行,那就沒什麼問題。
沒折了,只能繞個圈子,通過this.listview1.items[e.itemindex]來findcontrol
沒辦法,祭出reflctor,開啟system.web.extensions, version=3.5.0.0程式集,找到system.web.ui.webcontrols.listview.edititem. desassemble->
問題出在這裡了,看紅圈圈部分,如果編輯listview的第一行時,editindex是0,而edititem的實現竟然是判斷大於0 :(
順便看下editindex的實現
這個沒什麼問題了,如果設定值小於-1時就出錯,=-1就認為是結束編輯狀態。
難得第一次用listview就遇到這種bug。
ms的工程師也太粗心了。
附上個測試例子
listviewbugtest.rar
第一次用剪枝
hdoj 1010 include include using namespace std int n,m,t,sx,sy,ex,ey char maze 8 8 int dir 4 2 bool escape false int least distance int x,int y void df...
第一次用部落格
這是乙個開始 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。全新的介面設計,將會帶來全新的寫作體驗 在創作中心設定你喜愛的 高亮樣式,markdown將 片顯示選擇的高亮樣式進行展...
第一次用ActionScript
以前以為做網路程式設計就是好asp就好,但是後面漸漸的開始轉型asp.net了,又漸漸的轉到了php上,在這其中各種script的語言給我們的東西填色不少,如今漸漸地開始接觸到了一些東西,需要使用flash了,那就開始我的actionscript了。今天開始寫我的學習actionscript,今天的...