【问题标题】:Adding ClickEvent on dynamic LinkButtons in OnLoadComplete在 OnLoadComplete 中的动态链接按钮上添加 ClickEvent
【发布时间】:2011-05-04 05:33:42
【问题描述】:

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

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

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

但是(这是我的问题)似乎我在 createStuff() 中执行的事件连接 (Click += new EventHandler(changeDirectory)) 在 OnLoadComplete 中调用该方法时并没有真正起作用(在之后调用 OnLoadComplete已触发链接按钮单击事件)。结果是虽然链接按钮的文本属性反映了新目录中的文件夹,但单击链接按钮不会触发事件。

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

提前谢谢你

西蒙,丹麦

【问题讨论】:

  • 能否提供一些示例代码?具体来说,我想知道您是否为在 createStuff() 中动态创建的控件指定了 ID 值。
  • 嗨,感谢您的评论,这里是 createStuff() 方法:rafb.net/p/k0YlrU67.html 如您所见,我没有指定 ID 值。

标签: asp.net click linkbutton dynamic-controls


【解决方案1】:

一致地设置 LinkBut​​ton 的 ID 属性。

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

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

【讨论】:

  • 我已经解决了这个问题,只需在链接按钮单击事件发生后将浏览器重定向到页面(文件系统浏览器存储在会话变量中)。但我认为您的解决方案(有效)更好,感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
相关资源
最近更新 更多