我正在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上重新链接LinkButtons上的事件,但结果相同。
提前谢谢
丹麦西蒙
答案 0 :(得分:3)
始终如一地设置LinkButton的ID
属性。
此行为的两个常见原因是(1)缺少事件处理程序和(2)缺少ID属性。由于您确定在OnLoad
期间附加了事件处理程序,因此缺少ID属性可能是罪魁祸首。
当用户在客户端上单击您的LinkButton时,会将PostBack发送到服务器,该服务器按ID命名LinkButton。如果您没有确保您的控件在PostBack之间具有相同的ID,则可能不会引发事件处理程序。