2009-03-04 74 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,你的事件处理程序可能不会被引发。

相关问题