Solved

HyperLinkColumn and javascript

Posted on 2004-11-02
344 Views
Last Modified: 2008-02-01
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
0
Question by:bLUE
    12 Comments
     
    LVL 4

    Expert Comment

    by:sgalzin
    hi,

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

    thanks,

    stephane.
    0
     
    LVL 1

    Author Comment

    by:bLUE
    <td><a href="javascript:updateWin(3989)">Update</a></td>
    0
     
    LVL 4

    Expert Comment

    by:sgalzin
    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.
    0
     
    LVL 1

    Author Comment

    by:bLUE
    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?
    0
     
    LVL 4

    Expert Comment

    by:sgalzin
    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';
    }
    0
     
    LVL 1

    Author Comment

    by:bLUE
    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


    0
     
    LVL 4

    Expert Comment

    by:sgalzin
    hi again,

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

    stephane.
    0
     
    LVL 1

    Author Comment

    by:bLUE
    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..
    0
     
    LVL 4

    Accepted Solution

    by:
    hi,

    i see what's wrong : you haven't changed the html to :
    <td><a href="javascript:void" onclick="updateWin ( 3989, this )">Update</a></td>

    the code *has to be* in the onclick event, not in the href. it looks like this code is generated automatically though ... can you figure out how to insert the desired html ?
    0
     
    LVL 1

    Author Comment

    by:bLUE
    Ah I see.. The code is generated automatically... but I see how i can add the onclick as an attritube. I will investigate. Thanks
    0
     
    LVL 1

    Author Comment

    by:bLUE
    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

    0
     
    LVL 4

    Expert Comment

    by:sgalzin
    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.
    0

    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    Shellfire Box VPN + Lifetime Subscription

    The Shellfire Box easily connects all of your devices, even those that don't offer the possibility to establish a safe vpn connection. Access blocked content and surf safely, no matter where in the world you are located.

    Suggested Solutions

    I have helped a lot of people on EE with their coding sources and have enjoyed near about every minute of it. Sometimes it can get a little tedious but it is always a challenge and the one thing that I always say is:  The Exchange of information …
    Have you ever needed to get an ASP script to wait for a while? I have, just to let something else happen. Or in my case, to allow other stuff to happen while I was murdering my MySQL database with an update. The Original Issue This was written…
    In this sixth video of the Xpdf series, we discuss and demonstrate the PDFtoPNG utility, which converts a multi-page PDF file to separate color, grayscale, or monochrome PNG files, creating one PNG file for each page in the PDF. It does this via a c…
    This video discusses moving either the default database or any database to a new volume.

    884 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    21 Experts available now in Live!

    Get 1:1 Help Now