0

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

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

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

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

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

先感谢您

丹麦西蒙

4

1 回答 1

3

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

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

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

于 2009-03-04T21:26:44.670 回答