C# ClientScript.RegisterClientScriptBlock仅在PageLoad事件中有效
我正在尝试注册一个简单的脚本-C# ClientScript.RegisterClientScriptBlock仅在PageLoad事件中有效,c#,asp.net,registerclientscriptblock,clientscript,C#,Asp.net,Registerclientscriptblock,Clientscript,我正在尝试注册一个简单的脚本- ClientScript.RegisterClientScriptBlock(typeof(Page), "myscript", "<script>testfun();</script>"); ClientScript.RegisterClientScriptBlock(typeof(Page),“myscript”,“testfun();”; 当我将该行放入页面加载事件时,它可以正常工作。但是,每次用户在gridview中选择一行时,
ClientScript.RegisterClientScriptBlock(typeof(Page), "myscript", "<script>testfun();</script>");
ClientScript.RegisterClientScriptBlock(typeof(Page),“myscript”,“testfun();”;
当我将该行放入页面加载事件时,它可以正常工作。但是,每次用户在gridview中选择一行时,我都需要一些客户端函数来执行,因此在gridview.SelectedIndexChanged事件中,我添加了相同的行,但是,它在那里不起作用。有人能指出为什么会发生这种情况,或者指导我找到一个更优雅的解决方案吗?RegisterClient ScriptBlock不执行脚本,只将脚本发送到页面中,然后发送到客户端。它是一个编程等价物,具有一个
*.js
文件。该脚本仅在客户端加载生成的HTML页面时执行。如果您想在特定控件的事件上运行一些java脚本,则需要将javascript
方法连接到它,如下所示:
onclick="javascript_method();"
要实现此功能,您必须在
*.js
文件中定义javascript\u method()
,或者通过RegisterClientScriptBlock
尝试RegisterStartupScript?如果控件周围有UpdatePanel。您可以使用ScriptManager.RegisterStartupScript。为什么要在下次回发时注册脚本?你应该在初始加载时这样做,如果你想的话,你甚至可以省略SelectedIndex Changed上的回发。实际上,我的页面上有两个部分,它们都在一个单独的updatepanel中,因此当SelectedIndex更改时,整个页面不会加载,这就是我希望脚本运行的时候。因此,在初始加载中调用它将不起作用。我说得对吗@TimSchmelter@madatanicRegisterStartupScript也不工作。