2009-09-25 10 views
0

En utilisant asp.net, C# 3.5, vs 2008.Comment appeler une fonction javascript sur onrowcommand?

J'ai un GV1 appelé GridView ASPX avec un travail C# codebehind onrowcommand méthode qui est appelée lorsqu'un bouton sur la ligne est cliqué.

Le bouton sur le gridview est généré dynamiquement.

J'essaie de remplacer cet appel codebehind par une fonction javascript pour éviter un aller-retour vers le serveur.

Comment faire?

Jusqu'à présent, j'ai essayé

  1. ajouter un attribut de ligne dans le code derrière quand je suis générer dynamiquement le bouton dans une boucle foreach qui ne marchait pas:

    r.Attributes.Add ("OnRowCommand", "javascript: gv1RowCommand (ID);");

  2. ce qui suit qui donne une erreur avant d'exécuter: méthode pas surchargé prend 1 arg

    <asp:GridView ID="gv1" runat="server" onrowcommand="gv1RowCommand(ID)" ... 
    
  3. diverses autres choses comme événement onchange , onselected

J'utilise le javascript suivre juste voir si je peux l'appeler:

function gv1RowCommand(ID) { 
alert(
"row command"); 
} 
+0

Je suggère d'injecter javascript après que le DOM est chargé, de cette façon, si les scripts sont désactivés, vous pouvez toujours utiliser la publication pour gérer le côté serveur même. –

+0

je peux gérer l'événement à l'aide de Serverside déjà gv1_RowCommand protected void (object sender, GridViewCommandEventArgs e) { GridViewRow rang = (GridViewRow) (((Button) e.CommandSource).NamingContainer); etc ... J'essaie d'éviter la publication. –

+0

Vous ne comprenez pas le cycle de vie de la page. RowCommand n'est pas un événement côté client. –

Répondre

2

Vous devez d'abord créer l'objet de votre bouton, puis ajouter des attributs. chèque ci-dessous le code -

foreach (GridViewRow row in gv1.Rows) 
{ 
    //Creates object of button inside your gridView Row 
    Button btnRowCommand = (Button)row.FindControl("YourButtonName"); 
    //Adds Attribute to button- in this case adds onclick attribute 
    //which will fire the 
    //gv1RowCommand(ID); javascript function 
    btnRowCommand.Attributes.Add("onclick", "gv1RowCommand('"+ ID +"');"); 
} 

Au lieu de

// dont use this code 
r.Attributes.Add("OnRowCommand", "javascript:gv1RowCommand(ID);"); 
// dont use this code 

Cela entraînera votre fonction javascript gv1RowCommand (ID) au feu lorsque l'utilisateur clique sur le bouton à l'intérieur du gridview. Si vous avez besoin de plus d'informations sur l'utilisation de javascript dans gridView, vous pouvez poster ou répondre. Si l'extrait de code ci-dessus ne vous suffit pas, vous pouvez publier beaucoup plus de code et afficher le code approprié en conséquence.

+0

De même, vous pouvez ajouter l'événement click à la ligne elle-même de la même manière. De cette façon, l'utilisateur n'a qu'à cliquer sur la ligne pour déclencher l'événement (si c'est la fonction désirée). –

0

événements Javascript, vous pouvez jouer avec:

Javascript Events

Vous n'avez pas accès à l'une de vos méthodes de page ou propriétés en Javascript. Vous n'avez pas accès à quoi que ce soit de persistant à moins que vous ne travailliez avec Ajax ... Il n'y a donc pas grand chose que vous feriez dans RowCommand que vous pouvez utilement porter sur la couche javascript du client.

Questions connexes