2009-03-04 65 views
0

我在ASP.Net中創建了一個文件瀏覽器,但我遇到了一個問題,我認爲這個問題與動態控件上的事件連接有關。我會在這裏解釋我的代碼的作用:在OnLoadComplete的動態LinkBut​​ton上添加ClickEvent

當我的頁面加載(OnLoad)時,我調用一個方法(createStuff()),它創建了一些鏈接按鈕(表示當前目錄中的文件夾)將當前目錄更改爲與鏈接按鈕關聯的目錄。

由於在調用OnLoad之後觸發linkbutton-click-event(因此在onload之後首先更改當前目錄),linkbuttons不會更新以反映新的當前目錄(它們是在當前目錄之前創建的由點擊事件改變)。因此,我也在OnLoadComplete中調用createStuff(),導致鏈接按鈕被更新並反映新當前目錄中的文件夾。 (而這是我的問題)看起來,事件連線(Click + = new EventHandler(changeDirectory))在createStuff()中做的事情在OnLoadComplete(OnLoadComplete)中被調用時並不真正起作用在點擊鏈接按鈕事件後)。結果是雖然鏈接按鈕的文本屬性反映了新目錄中的文件夾,但單擊鏈接按鈕不會觸發事件。

我該如何解決這個問題?我嘗試在OnLoad上重新鏈接LinkBut​​ton上的事件,但結果相同。

預先感謝您

西蒙,丹麥

+0

你能否提供一些示例代碼?具體來說,我想知道是否爲createStuff()中動態創建的控件指定了ID值。 – 2009-03-04 19:14:48

+0

嗨,感謝評論,這裏的createStuff() - 方法: http://rafb.net/p/k0YlrU67.html 正如你所看到的,我沒有指定ID值。 – user73738 2009-03-04 20:16:47

回答

3

始終設置LinkBut​​ton的ID財產。

此行爲的兩個常見原因是(1)缺少事件處理程序和(2)缺少ID屬性。由於您確定在OnLoad期間正在附加您的事件處理程序,因此缺少ID屬性是可能的罪魁禍首。

當用戶在客戶端上單擊您的LinkBut​​ton時,會將一個回傳發送到通過ID爲LinkBut​​ton命名的服務器。如果你不確保你的控件在PostBacks之間有相同的ID,你的事件處理程序可能不會被引發。