用户控制 - 从javascript调用vb链接按钮(在用户控件内)单击事件

时间:2009-04-11 12:02:07

标签: asp.net javascript vb.net visual-studio-2008 user-controls

如何从usercontrol.ascx中的deleteevent()中的javascript函数调用usercontrol.ascx.vb中的VB函数clickhandler(e)调用应该导致回发,因为我需要usercontrol来显示更改。

我目前正在尝试使用带有样式display:none的链接按钮,并从javascript函数调用其click事件。但我不知道如何调用点击事件。

我不得不从javascript向vb函数传递一个值,但我正在使用一个隐藏字段来处理它。

环境是asp.net 3.0语言:vb

感谢。

2 个答案:

答案 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)

这个有点棘手,但很有趣。

基本上,您需要:

  1. 在要引发事件的控件上实现IPostBackEventHandler
  2. 为控件
  3. 创建回发引用
  4. 通过超链接或jscript
  5. 调用回发引用
  6. 在后面的代码中,处理回发引用并调用代码

    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
    
  7. 有关详细信息,请参阅此处:ClientScriptManager.GetPostBackEventReference