Click here to Skip to main content
6,595,444 members and growing! (17,526 online)
Email Password   helpLost your password?
Web Development » ASP.NET Controls » Grid Controls     Intermediate License: The Code Project Open License (CPOL)

Hotmail-like Mouse Over & Mouse Out Effects on GridView

By Samir NIGAM

This article describes how to apply client-side mouse over & mouse out effects on the GridView’s rows.
Javascript, CSS, HTML, .NET (.NET 2.0), ASP.NET, Dev
Posted:30 Jan 2008
Updated:8 Mar 2008
Views:53,361
Bookmarked:70 times
Announcements
Loading...
 
Search    
Advanced Search
Add to IE Search
printPrint   add Share
      Discuss Discuss   Broken Article?Report  
24 votes for this article.
Popularity: 6.01 Rating: 4.36 out of 5

1
1 vote, 4.2%
2
2 votes, 8.3%
3
2 votes, 8.3%
4
19 votes, 79.2%
5

Introduction

If you have a Hotmail Windows Live ID email account, then you have already observed mouse over and mouse out effects on the rows of an Inbox’s grid. On a mouse over event of any row of the Inbox’s grid, a CheckBox appears in place of an Image. Similarly, on a mouse out event, an Image appears in place of a CheckBox.

There are three types of images that appear in place of a CheckBox. If the message is unread, then the message.png Image appears. If the message is read, then the message_open.png Image appears. If the message has been replied to, then the message_reply.png Image appears.

Now if we make a CheckBox checked that appears on a row due to a mouse over event, then the mouse over and mouse out effects on that row get disabled. If we make that CheckBox unchecked, then the mouse over and mouse out effects start to work for that row again.

Now I'm going to present this functionality with the help of the GridView control. In this small application, I'm going to use only a single Image rather than use all three images. On a mouse over event for a row, a CheckBox will appear. On a mouse out event, an Image will appear. If we make CheckBox checked, then the mouse over and mouse out effects on that row will get disabled. Further, on making that CheckBox unchecked, mouse over and mouse out effects will start to work for that row again.

I have also implemented row coloring of GridView on mouse over and mouse out events in this application.

HTML Code

Use a TemplateField inside the GridView and put a CheckBox and an Image in the ItemTemplate of the TemplateField. The HTML code for GridView will look like this:

<asp:GridView ID="gvHotmail" runat="server" AutoGenerateColumns="False"
    OnRowDataBound="gvHotmail_RowDataBound">
            <Columns>
                <asp:BoundField HeaderText="n" DataField="n">
                    <HeaderStyle Width="50px" />
                    <ItemStyle Width="50px" />
                </asp:BoundField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <input id="chkBxMail" type="checkbox" runat="server" />
                        <asp:Image ID="imgMail" runat="server" ImageUrl="~/mail.png" />
                    </ItemTemplate>
                    <HeaderStyle Width="50px" />
                    <ItemStyle Width="50px" />
                </asp:TemplateField>
                <asp:BoundField HeaderText="n*n" DataField="nn">
                    <HeaderStyle Width="100px" />
                    <ItemStyle Width="100px" />
                </asp:BoundField>
            </Columns>
            <HeaderStyle Height="25px" BackColor="DarkOrange"
                HorizontalAlign="Center" VerticalAlign="Middle" />
            <RowStyle Height="25px" BackColor="NavajoWhite"
                HorizontalAlign="Center" VerticalAlign="Middle" />
            <AlternatingRowStyle Height="25px" BackColor="Gold"
                HorizontalAlign="Center" VerticalAlign="Middle" />
 </asp:GridView>

C# Code

Put the following code in the RowDataBound event of GridView:

if (e.Row.RowType == DataControlRowType.DataRow && (
    e.Row.RowState == DataControlRowState.Normal || e.Row.RowState ==
    DataControlRowState.Alternate))
        {
            HtmlInputCheckBox chkBxMail =
                (HtmlInputCheckBox)e.Row.Cells[1].FindControl("chkBxMail");
            Image imgMail = (Image)e.Row.Cells[1].FindControl("imgMail");

            e.Row.Attributes["onmouseover"] =
                string.Format("javascript:ItemMouseOver(this,'{0}','{1}');",
                chkBxMail.ClientID, imgMail.ClientID);
            e.Row.Attributes["onmouseout"] =
                string.Format("javascript:ItemMouseOut(this,'{0}','{1}');",
                chkBxMail.ClientID, imgMail.ClientID);

            chkBxMail.Attributes["style"] = "display:none;";
        } 

In the above code, first I have ensured that the row is either Normal or Alternate. After that, I have gotten the references of the CheckBox and Image controls and attached client-side mouse over and mouse out events on them. I have also added a style [display:none;] on the CheckBox control so that initially CheckBox will not appear.

JavaScript Code

Put this JavaScript in the page's head section.

<script type="text/javascript">
    function ItemMouseOver(oRow, chkBxMail, imgMail)
    {
        oCheckBox = document.getElementById(chkBxMail);
        oImage = document.getElementById(imgMail);

        if(!oCheckBox.checked)
        {
            oCheckBox.style.display = '';
            oImage.style.display = 'none';
            oRow.originalBackgroundColor = oRow.style.backgroundColor
            oRow.style.backgroundColor = 'White';
        }
    }

    function ItemMouseOut(oRow, chkBxMail, imgMail)
    {
        oCheckBox = document.getElementById(chkBxMail);
        oImage = document.getElementById(imgMail);

        if(!oCheckBox.checked)
        {
            oCheckBox.style.display = 'none';
            oImage.style.display = '';
            oRow.style.backgroundColor = oRow.originalBackgroundColor;
        }
    }
</script>

In the above script, there are two functions: ItemMouseOver and ItemMouseOut. ItemMouseOver is called on mouse over events and ItemMouseOut is called on mouse out events for GridView rows. In the ItemMouseOver function, CheckBox appears and Image disappears. In the ItemMouseOut function, CheckBox disappears and Image appears. In both functions, appearing/disappearing effects will reflect provided the CheckBox is unchecked. I have also used some coloring effects on mouse over and mouse out effects respectively.

Supporting Browsers

I have tested this script on the following browsers:

Browsers.png

History

  • 30 January, 2008 -- Original version posted
  • 6 February, 2008 -- Article edited
  • 5 March, 2008 -- Article updated

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Samir NIGAM


Member

SAMIR NIGAM is the Tech Lead at Axero Solutions LLC. He is a CodeProject MVP 2009, a Microsoft Certified Technology
Specialist (MCTS)
as well as a Microsoft Certified Professional Developer (MCPD)
in C# for web-based applications. He is an insightful IT professional with
results-driven comprehensive technical skill having rich, hands-on work experience
in web-based applications using ASP.NET, C#, AJAX, Microsoft
Enterprise Library
, MS SQL Server 2005.


He has earned his master degree (MCA) from U.P. Technical University, Lucknow,
INDIA, his post graduate dipoma (PGDCA ) from Institute of Engineering and
Rural Technology, Allahabad, INDIA and his bachelor degree (BSc - Mathematics)
from University of Allahabad, Allahabad, INDIA.


He has good knowledge of Object Oriented Programming, 3-Tier Architecture
and Algorithm Analysis & Design as well as good command over cross-browser
client side programming using JavaScript.

Awards:


Contact: nigam.samir@hotmail.com
Occupation: Team Leader
Company: Axero Solutions LLC
Location: India India

Other popular ASP.NET Controls articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 24 of 24 (Total in Forum: 24) (Refresh)FirstPrevNext
GeneralMouse-over event on gridview Pinmembernaresh150720:01 16 Sep '09  
GeneralSlight Variation PinmemberGhost Shield13:20 7 Dec '08  
GeneralRe: Slight Variation PinmemberSameer NIGAM3:02 9 Dec '08  
GeneralUsing Css PinmemberAbishek Bellamkonda14:16 4 Mar '08  
GeneralRe: Using Css Pinmember SAMir Nigam 19:14 21 May '08  
Questionproblem with ClientID Pinmembert-fuse22:33 28 Feb '08  
GeneralRe: problem with ClientID Pinmember Samir Nigam 17:58 3 Mar '08  
GeneralRe: problem with ClientID Pinmembert-fuse2:03 4 Mar '08  
GeneralRe: problem with ClientID Pinmember Samir Nigam 4:43 4 Mar '08  
GeneralNice effort keep it up. PinmemberSecrets19:17 5 Feb '08  
GeneralRe: Nice effort keep it up. Pinmember Samir Nigam 21:39 5 Feb '08  
GeneralThe article is not matching at all as per one of our Criticizer PinmemberSandeep Shekhar19:35 30 Jan '08  
GeneralRe: The article is not matching at all as per one of our Criticizer PinmemberSamir Nigam19:46 30 Jan '08  
GeneralI did something simliar PinmvpSacha Barber5:40 30 Jan '08  
GeneralRe: I did something simliar PinmemberSamir Nigam19:04 30 Jan '08  
GeneralRe: I did something simliar PinmvpSacha Barber23:20 30 Jan '08  
GeneralRe: I did something simliar [modified] PinmemberI Never Look Behind19:53 30 Jan '08  
GeneralRe: I did something simliar PinmvpSacha Barber23:20 30 Jan '08  
GeneralRe: I did something simliar [modified] PinmemberRanjan.D20:03 9 Mar '08  
GeneralNice PinmemberHonest2:20 30 Jan '08  
GeneralRe: Nice PinmemberI Never Look Behind19:54 30 Jan '08  
GeneralRe: Nice PinmemberSamir Nigam19:56 30 Jan '08  
GeneralHi Samir PinmemberMCSDvikasmisra2:04 30 Jan '08  
GeneralRe: Hi Samir PinmemberSamir Nigam2:12 30 Jan '08  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 8 Mar 2008
Editor: Sean Ewington
Copyright 2008 by Samir NIGAM
Everything else Copyright © CodeProject, 1999-2009
Web22 | Advertise on the Code Project