Client side script won't execute with ScriptManager

ぐ巨炮叔叔 提交于 2019-12-30 17:09:31

问题


  1. I have a user control which has an update panel
  2. I am trying to execute a client side script from an async postback from a button inside the updatepanel
  3. I am using ScriptManager.RegisterStartupScript to execute the script but it never gets executed
  4. The scriptmanager proxy is not inside the user control itself it is in the page containing the user control
  5. Is there any way round this problem?

Script registration:

ScriptManager.RegisterStartupScript(
    this, 
    this.GetType(), 
    "CloseEdit", 
    "CloseEditModal();", 
    true
);

Thanks, Damien.


回答1:


The documentation to the ScriptManager.RegisterStartupScript Method (Control, Type, String, String, Boolean) (I assume you use this overload) says:

Startup script blocks that are registered by using this method are sent to the page only when the control that is registering the block is inside an UpdatePanel control that is being updated.

I assume you call the ScriptManager.RegisterStartupScript method from your user control (which has an update panel as you said). This means the first parameter of the method is not inside an UpdatePanel control that is being updated, so the script block is not registered. So changing your script registraction to:

ScriptManager.RegisterStartupScript(
    btnUpdate, 
    btnUpdate.GetType(), 
    "CloseEdit", 
    "CloseEditModal();", 
    true
);

should solve your problem. btnUpdate here is the button inside you UpdatePanel that caused the postback (you mention this in paragraph 2).



来源:https://stackoverflow.com/questions/5593275/client-side-script-wont-execute-with-scriptmanager

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!