代码之家  ›  专栏  ›  技术社区  ›  Eric

是否可以触发另一个按钮的onclientclick事件?

  •  1
  • Eric  · 技术社区  · 16 年前

    我有一个模式弹出窗口,其中有一个指向隐藏按钮的targetid。我希望在单击网格中的按钮时弹出,但该按钮是在代码后面编程的,因此targetid将无效…

    所以我想尝试将GridView按钮的onclientClick事件设置为隐藏按钮的onclientClick事件。这是可能的还是应该换一种方式。

    下面是我如何创建网格按钮

     If Not IsPostBack Then
            Dim field As New TemplateField
            field.HeaderText = "Sub Departments"
            Dim col As DataControlField = field
            GridView1.Columns.Add(col)
    
            For i As Integer = 0 To GridView1.Rows.Count - 1
                Dim btnview As New ImageButton
                btnview.ImageUrl = "\images\icons\xp_ico_search_24x24.gif"
                GridView1.Rows(i).Cells(3).Controls.Add(btnview)
            Next
    
    End If
    
    2 回复  |  直到 16 年前
        1
  •  5
  •   Jason Plank Maksim Kondratyuk    13 年前

    我假设您使用的是Web表单。如果是这样,那么是的,这是非常可能的。 执行以下操作。

    1. 在页面上创建一个javascript函数

      function openModal(btnId){
          btn = document.getElementById(btnId);
          btn.click(); // this should fire the click even of the button
      }
      
    2. 在网格按钮上添加onclientclick事件:

      gridButton.OnClientClick = String.Format("openModal('{0}');", modalButton.ClientId))
      

    这将设置将模式窗口触发到javascript函数中的按钮的客户端ID。如果您需要用其他数据填充模式窗口,那么您也应该在这个函数中这样做。

    您使用的是ASP.NET AJAX控件工具包吗?或者别的什么?这假设工具箱。

    另外,您已经将按钮的可见性设置为隐藏,但不要将 Visible=False 属性,因为这不会呈现按钮。要隐藏它,您需要使用客户端属性 style="display:none"

    此链接可能有助于: http://forums.asp.net/t/1066506.aspx

        2
  •  1
  •   Jason Plank Maksim Kondratyuk    13 年前

    这是可能的,它要求您关闭按钮“doPostback”功能。

    尝试查看 Page.ClientScript.GetPostBackClientHyperlink method .

    或者,您可以使用javascript和 .click() 事件,但我认为这限制了你作为一个浏览器,但不确定这一点。

    看起来像这样

    javascript:document.getElementById('clientSideID').click();