如何从ASPX控件事件中调用Javascript函数?
具体来说,我想从DropDownList的SelectedIndexChanged事件中调用该函数。
答案 0 :(得分:14)
每当我看到这样的问题时,我都会感到有点紧张,因为十分之九意味着提问者并不真正理解发生了什么。
当您的SelectedIndexChanged事件在服务器上触发时,它将作为完整回发的一部分触发。这意味着要运行该代码,页面的其余部分加载代码也必须运行。
更重要的是,代码作为来自浏览器的新http请求的结果运行。就浏览器而言,结果中会返回一个全新的页面。旧页面和旧DOM将被丢弃。因此,当您的SelectedIndexChanged事件代码运行时,您要调用的javascript函数甚至不存在于浏览器中。
那又该做什么呢?您有几个选择:
答案 1 :(得分:2)
正如Muerte所说,你必须在后面的代码中放置javascript,或者在页面上调用它。我个人用这个:
ClientScript.RegisterClientScriptBlock("customscript", "<script>simple script here</script>")
如果您在页面上已经有一个更复杂的功能而不是我拥有的东西,您可以调用该功能。
答案 2 :(得分:1)
您不能直接从事件中执行此操作,因为ASPX控件事件是服务器端。
你可以做的是在ASPX事件中发出一个Javascript,它会在页面重新加载时调用JavaScript函数。
例如,如果在ASPX页面中有一个名为“DoSomething()”的Javascript函数,则在ASPX控件事件中添加以下内容:
protected void btnSubmit_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "myEvent", "DoSomething()", true);
}
最后一个布尔参数定义了标签是自动添加的。
答案 3 :(得分:0)
在后面的代码中,通过其属性集合将一些标记附加到服务器端控件。这假定该函数已经存在于页面已经可用的客户端脚本文件中。
MyServerDDLControl.Attributes.Add("SelectedIndexChanged", "MyClientSideFunction();");