在OnLoadComplete中的动态链接按钮上添加Click事件

时间:2009-03-04 16:58:39

标签: asp.net click linkbutton dynamic-controls

我正在ASP.Net中创建一个文件浏览器,但我遇到了一个问题,我认为这与动态控件上的事件连线有关。我将解释我的代码在这里做了什么:

当我的页面加载(OnLoad)时,我调用一个方法(createStuff()),该方法创建了许多链接按钮(表示当前目录中的文件夹),这些链接按钮连接到一个事件,该事件将当前目录更改为关联的目录使用linkbutton。

由于在调用OnLoad之后触发了linkbutton-click-event(因此当前目录在onload之后首次更改),链接按钮不会更新以反映新的当前目录(它们是在当前目录更改之前创建的通过点击事件)。因此,我还在OnLoadComplete中调用createStuff(),导致链接按钮被更新并反映新当前目录中的文件夹。

HOWEVER(这是我的问题)似乎在OnLoadComplete中调用该方法时,我在createStuff()中执行的事件连接(Click + = new EventHandler(changeDirectory))实际上并不起作用(OnLoadComplete在之后被调用)已经触发了linkbutton-click-event)。结果是,虽然链接按钮的text-property反映了新目录中的文件夹,但单击链接按钮不会触发事件。

如何解决此问题?我尝试在OnLoad上重新链接LinkBut​​tons上的事件,但结果相同。

提前谢谢

丹麦西蒙

1 个答案:

答案 0 :(得分:3)

始终如一地设置LinkBut​​ton的ID属性。

此行为的两个常见原因是(1)缺少事件处理程序和(2)缺少ID属性。由于您确定在OnLoad期间附加了事件处理程序,因此缺少ID属性可能是罪魁祸首。

当用户在客户端上单击您的LinkBut​​ton时,会将PostBack发送到服务器,该服务器按ID命名LinkBut​​ton。如果您没有确保您的控件在PostBack之间具有相同的ID,则可能不会引发事件处理程序。