RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: .NET
Expertise: Intermediate
Nov 12, 2009

ASP.NET Workaround: Calling a JavaScript Function from a HyperLinkField in a GridView

If you place a HyperLinkField in a GridView in an ASP.NET page and link it to a JavaScript function, you'll find that it doesn't work properly. The problem is that the URL specified by the HyperLinkField's NavigateUrl fails to render when you use a JavaScript reference (such as "Javascript:func();") rather than a standard URL.

One possible workaround is to create an item template column containing a hyperlink.

As a workaround, however, you can use the RowDataBoundEvent to prepare a proper call to the JavaScript function. To make this work, developers need to type "Javascript." (with a period) instead of "Javascript:" (with a colon) in the designer.

Here's an example:

void grid_RowDataBound(object sender, GridViewRowEventArgs e)
   //if it is not DataRow return.
   if (e.Row.RowType != DataControlRowType.DataRow)

   //Loop thru the cells changing the "." to ":" in hyperlink navigate URLs
   for (int i = 0; i < e.Row.Cells.Count; i++)
      TableCell td = e.Row.Cells[i];
      if (td.Controls.Count > 0 && td.Controls[0] is HyperLink)
         HyperLink hyperLink = td.Controls[0] as HyperLink;
         string navigateUrl = hyperLink.NavigateUrl.ToLower();
         hyperLink.NavigateUrl = hyperLink.NavigateUrl.Replace(
            navigateUrl.IndexOf("javascript."), "javascript.".Length), 
Srinath MS
Close Icon
Thanks for your registration, follow us on our social networks to keep up-to-date