如何从usercontrol.ascx中的deleteevent()
中的javascript函数调用usercontrol.ascx.vb中的VB函数clickhandler(e)
。 调用应该导致回发,因为我需要usercontrol来显示更改。
我目前正在尝试使用带有样式display:none的链接按钮,并从javascript函数调用其click事件。但我不知道如何调用点击事件。
我不得不从javascript向vb函数传递一个值,但我正在使用一个隐藏字段来处理它。
环境是asp.net 3.0语言:vb
感谢。
答案 0 :(得分:4)
检查这两个关于使用JQuery调用代码隐藏方法的链接:
Using jQuery to directly call ASP.NET AJAX page methods
Using jQuery to Call ASP.NET AJAX Page Methods
你应该调用aspx而不是ascx方法。因为在运行时所有用户控件(ascx)都合并到您的页面(aspx)。
如果页面中有多个实例的用户控件,则应使用参数在每个usercontrol中定义方法的上下文。也许是用户控件的clientID。
答案 1 :(得分:1)
这个有点棘手,但很有趣。
基本上,您需要:
在后面的代码中,处理回发引用并调用代码
Public Class MyControl
Inherits UserControl
Implements IPostBackEventHandler
Public Sub RaisePostBackEvent(ByVal eventArgument As String) Implements System.Web.UI.IPostBackEventHandler.RaisePostBackEvent
' Call deleteEvent here
DeleteEvent(eventArgument) ' This will contain "SomeArgumentYouWantToPassToDeleteEvent"
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim cs As ClientScriptManager = Page.ClientScript
Dim a As New HtmlAnchor()
a.ID = "myanchor1"
a.InnerText = "Delete Event"
a.HRef = cs.GetPostBackClientHyperlink(Me, "SomeArgumentYouWantToPassToDeleteEvent")
' You could alternatively construct some jscript and output it.
Controls.Add(a)
End Sub
End Class
有关详细信息,请参阅此处:ClientScriptManager.GetPostBackEventReference