2009-05-18 9 views
1

J'ai un popup modal qui a un targetId à un bouton caché. Je veux que le popup se produise quand un bouton dans une grille est cliqué mais ce bouton est programmé derrière le code et donc le targetId serait invalide ...Est-il possible de déclencher l'événement onclientclick d'un autre bouton?

Je voulais donc essayer de placer l'événement onclientclick du bouton gridview le onclientclickevent de ce bouton caché. Est-ce possible ou devrais-je m'y prendre autrement.

voici comment j'ai créé le bouton grille

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 

Répondre

5

Je suppose que vous utilisez des formulaires Web. Si oui alors oui, c'est très possible. Procédez comme suit.

  1. Créer une fonction javascript sur la page

    function openModal(btnId){ 
        btn = document.getElementById(btnId); 
        btn.click(); // this should fire the click even of the button 
    } 
    
  2. sur le bouton de grille ajouter l'événement OnClientClick:

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

Cela définira le client Id du bouton qui déclenche la fenêtre modale dans la fonction javascript. Si vous avez besoin de remplir la fenêtre modale avec d'autres données, vous devez également le faire dans cette fonction.

Utilisez-vous ASP.Net AJAX Control Toolkit? Ou autre chose? Cela suppose la boîte à outils.

De même, vous avez défini la visibilité du bouton sur caché, mais pas la propriété Visible=False côté serveur, car cela ne rendra pas le bouton. Pour le cacher, vous devez utiliser la propriété côté client style="display:none"

Ce lien peut aider: http://forums.asp.net/t/1066506.aspx

+0

Wow. Vous avez réussi!. Je vous remercie! – Eric

+0

Et si je voulais changer le texte d'une zone de texte sur le client, cliquez juste avant que cette fonction se déclenche? La raison pour laquelle je veux faire cela est parce que ce modal affiche un gridview avec des données qui dépendent des données d'une zone de texte. Cette zone de texte obtiendra ses données sur le clic client depuis les données de ligne de la grille. une idée de comment faire tout cela sur le même onclientclick? – Eric

+0

Lorsque vous définissez la propriété onclientclick, vous pouvez imbriquer plusieurs instructions javascript à condition qu'elles soient séparées par un ";". As: gridButton.OnClientClick = Chaîne.Format ("getElementById ('txtBoxId'). Text = 'nouveau texte'; openModal ('{0}');", modalButton.ClientId)) – alanquillin

1

Il est possible de faire cela, il vous oblige à tirer au large des touches fonction « doPostBack ».

Essayez de regarder dans le Page.ClientScript.GetPostBackClientHyperlink method.

Vous pouvez également utiliser javascript et l'événement .click(), mais je pense que cela vous limite à IE en tant que navigateur, mais je ne suis pas sûr de cela.

Il se présente comme suit

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