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

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

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

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

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

先感谢您

西蒙,丹麦

有帮助吗?

解决方案

设置 LinkBut​​ton 的 ID 财产一致。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top