Link to home
Start Free TrialLog in
Avatar of bLUE
bLUE

asked on

HyperLinkColumn and javascript

Hello..

I have the following setup:

<asp:HyperLinkColumn Text="Update" DataNavigateUrlField="id" DataNavigateUrlFormatString="javascript:updateWin({0})" HeaderText="Update" Visible="False"></asp:HyperLinkColumn>

as a datagrid column

and javascript as:

function updateWin(intId){
   var objEvent = window.event.srcElement;
   alert(objEvent.outerHTML);
}

For some reason, the event is null.. why is this?.. and is there a work around. I want to capture the event and then color the background of the cell thats clicked. Any ideas.. all help appreciated. Thanks
Avatar of sgalzin
sgalzin

hi,

could you please post the resulting html code ? i think i might be able to help you with that.

thanks,

stephane.
Avatar of bLUE

ASKER

<td><a href="javascript:updateWin(3989)">Update</a></td>
hi,

change the html code to :  <td><a href="javascript:void" onclick="updateWin ( this )">Update</a></td>

and change the js function to this :

function updateWin ( obj ) {
 obj.parentNode.style.backgroundColor = '000000';
}

that should do the trick i think ;-)

hope that helps !

stephane.
Avatar of bLUE

ASKER

ahh good idea..

only problem is that obj.parentNode is null..  obj contains some stuff.. ( I did a quick watch on it ). but the parentNode is null..

When i did alert(obj.parentElement.outerHTML); that was empty too ? Any ideas?
hi,

what browser are you using ?

could you please post the outputs of the following alerts ? thanks ! stephane.

function updateWin ( obj ) {
 alert ( obj );
 alert ( obj.innerHTML );
 alert ( obj.outerHTML );
 alert ( obj.parentNode );
 alert ( obj.parentElement );
 alert ( obj.parentNode.style );
 alert ( obj.parentElement.style );
// obj.parentNode.style.backgroundColor = '000000';
}
Avatar of bLUE

ASKER

alert ( obj );  = [object]
 alert ( obj.innerHTML ); = undefined
 alert ( obj.outerHTML ); = undefined
 alert ( obj.parentNode );= undefined
 alert ( obj.parentElement ); = undefined
 alert ( obj.parentNode.style ); = .net runtime error
 alert ( obj.parentElement.style ); =  .net runtime error


hi again,

are these scripts run from the client (i.e. the browser) ?? could you please repost the resulting html code ? thanks,

stephane.
Avatar of bLUE

ASKER

The table is actually a asp.net datagrid, and the output is HTML as I pasted earlier.

The scripts above are client code that are contained in the <head>

<HEAD>
<script language="javascript">

function updateWin(intId, obj){
 alert ( obj );
 alert ( obj.innerHTML );
 alert ( obj.outerHTML );
 alert ( obj.parentNode );
 alert ( obj.parentElement );
 alert ( obj.parentNode.style );
 alert ( obj.parentElement.style );

window.open('update.aspx?id='+intId, 'update',"width=600,height=450,scollbars=1");
}
</script>
</head>

<html>
<table....
...<td><a href="javascript:updateWin(3989, this)">Update</a></td>
</table>

Hope this helps..
ASKER CERTIFIED SOLUTION
Avatar of sgalzin
sgalzin

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of bLUE

ASKER

Ah I see.. The code is generated automatically... but I see how i can add the onclick as an attritube. I will investigate. Thanks
Avatar of bLUE

ASKER

Got it:

Datagrid column:

<asp:TemplateColumn HeaderText="Update">
 <ItemTemplate>
  <asp:HyperLink id="AttachmentLink" runat="server">Update</asp:HyperLink>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>

Item binding code:
private void dgResults_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
            {
                  if( (e.Item.ItemType == ListItemType.Item) || ( e.Item.ItemType == ListItemType.AlternatingItem))
                  {
                        HyperLink oLAttachment = (HyperLink)e.Item.FindControl("AttachmentLink");
                        if (oLAttachment != null)
                        {      
                              DbDataRecord objRow = (DbDataRecord)e.Item.DataItem;
                              String strId = objRow["id"].ToString();
                              oLAttachment.Attributes.Add("onClick","updateWin('" + strId + "',this)");
                        }
                  }
            }

jscript:
function updateWin(intId, obj){
                  obj.parentNode.style.backgroundColor = '000000';
                  window.open('update.aspx?id='+intId, 'update',"width=600,height=450,scollbars=1");
            }


:)

Thanks

hi,

sorry i was away for some time ! i'm glad you figured it out (it sounds like i wasn't of much use on the asp part ;-))

cheers,

stephane.