How to I call a javascript function on onrowcommand?

Lill Lansey picture Lill Lansey · Sep 25, 2009 · Viewed 8.4k times · Source

Using asp.net, c# 3.5, vs 2008.

I have an aspx gridview called gv1 with a working c# codebehind onrowcommand method which is called when a button on the row is clicked.

The button on the gridview is being dynamically generated.

I am trying to replace that codebehind call with a javascript function to avoid a roundtrip to the server.

How do I do this?

So far I have tried

  1. adding a row attribute in the code behind when I am dynamically generating the button in a foreach loop , which didnt work:

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

  2. the following which gives an error before running: no overloaded method takes 1 arg

    <asp:GridView ID="gv1" runat="server" onrowcommand="gv1RowCommand(ID)" ...
    
  3. various other things such as event onchange , onselected

I am using the follow javascript just to see if I can get it to be called:

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

Answer

Aamod picture Aamod · Sep 25, 2009

You need to create object of your button first and then add attributes to it. check below 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 +"');"); 
 }

Instead of

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

This will cause your javascript function gv1RowCommand(ID) to fire when user clicks the button inside the gridview. If you need any more information of using javascript in gridView you can mail or reply. If the above code snippet is not enough for you, you can post much more code listing and will post the proper code accordingly.