用javascript css实现GridView行背景色交替、鼠标划过行变色,点击行变色选中

加上鼠标点击选择(其实只是点击后变个颜色,“选择”这个词在这里不合适),顺便把这个直接应用到GridView上,如果是其他的控件,或者直接的HTML,稍加修改也可以用上,这里仅提供一个思路。虽然GridView使用AlternatingRowStyle提供了交替行背景色的问题,但这个东西用着实在不爽,看它生成到HTML的那个table,那叫一个乱啊。

下面是代码,注释应该还算比较详细,比较适合初学者,可以把下面两个文件的代码直接复制到你的项目中直接执行。最下面有文件的下载地址,也可以直接下载后运行,代码在IE7,IE8,Firefox2,Firefox3下测试通过,有任何问题,请在下面留言,我将尽量及时回复。

BackgroundColor.aspx
主要包含一个GridView,是我们折腾的重点对象,还有一堆javascript,是我们折腾GridView的手段

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="BackgroundColor.aspx.cs" Inherits="_BackgroundColor" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>BackgroundColor</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:GridView runat="server" ID="gvMeiMingZi"></asp:GridView>
    </form>
    <script type="text/javascript">
        //把事件放在onload里,因为我不知道JS如果直接写到这儿是不是会等页面加载完才执行
        //使用<%=%>方式输出GridView的ID是因为某些情况下(如使用了MasterPage)会造成HTML中ID的变化
        //颜色值推荐使用Hex,如 #f00 或 #ff0000
        window.onload = function(){
            GridViewColor("<%=gvMeiMingZi.ClientID%>","#fff","#eee","#6df","#fd6");
        }

//参数依次为(后两个如果指定为空值,则不会发生相应的事件):
        //GridView ID, 正常行背景色,交替行背景色,鼠标指向行背景色,鼠标点击后背景色
        function GridViewColor(GridViewId, NormalColor, AlterColor, HoverColor, SelectColor){
            //获取所有要控制的行
            var AllRows = document.getElementById(GridViewId).getElementsByTagName("tr");

//设置每一行的背景色和事件,循环从1开始而非0,可以避开表头那一行
            for(var i=1; i<AllRows.length; i++){
                //设定本行默认的背景色
                AllRows[i].style.background = i%2==0?NormalColor:AlterColor;

//如果指定了鼠标指向的背景色,则添加onmouseover/onmouseout事件
                //处于选中状态的行发生这两个事件时不改变颜色
                if(HoverColor != ""){
                    AllRows[i].onmouseover = function(){if(!this.selected)this.style.background = HoverColor;}
                    if(i%2 == 0){
                        AllRows[i].onmouseout = function(){if(!this.selected)this.style.background = NormalColor;}
                    }
                    else{
                        AllRows[i].onmouseout = function(){if(!this.selected)this.style.background = AlterColor;}
                    }
                }

//如果指定了鼠标点击的背景色,则添加onclick事件
                //在事件响应中修改被点击行的选中状态
                if(SelectColor != ""){
                    AllRows[i].onclick = function(){
                        this.style.background = this.style.background==SelectColor?HoverColor:SelectColor;
                        this.selected = !this.selected;
                    }
                }
            }
        }
    </script>
</body>
</html>

BackgroundColor.aspx.cs
用于生成一堆用于测试的数据,不然前面的GridView里啥也没有,就看不出效果了

using System;
using System.Data;

public partial class _BackgroundColor:System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //生成DataTable并添加10个列
        DataTable dt = new DataTable();
        for(int i = 0; i < 10; i++)
        {
            dt.Columns.Add();
        }

//往DataTable里添加20行数据
        for(int i = 0; i < 20; i++)
        {
            dt.Rows.Add(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
        }

//将DataTable绑定到GridView
        gvMeiMingZi.DataSource = dt;
        gvMeiMingZi.DataBind();
    }
}

示例打包下载http://xiazai.jb51.net/yuanma/asp.net/GridView_Javascript.rar

示例文件:点击这里下载示例文件

(0)

相关推荐

  • JS获取鼠标选中的文字

    js获取鼠标选中的文字代码如下所示: <html> <head> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>js获取鼠标选中的文字</title> <SCRIPT LANGUAGE="JavaScript"> <!-- functi

  • js实现鼠标点击文本框自动选中内容的方法

    本文实例讲述了js实现鼠标点击文本框自动选中内容的方法.分享给大家供大家参考.具体如下: 这里使用JS实现鼠标点击时自动选中文本框文本的效果,相信许多朋友都遇到这种功能的,就是当我们点击文本框的时候,文本框中默认的文字会被全部选中,这样当你输入的时候不用再去选择,省去了一些麻烦,提高了输入效率,用户肯定会喜欢这功能,那么实现的方法是怎么样呢?通过本代码你就搞明白了. 先来看看运行效果截图: 在线演示地址如下: http://demo.jb51.net/js/2015/js-mouse-click

  • 当鼠标滑过文本框自动选中输入框内容的JS代码分享

    复制代码 代码如下: <html><head><title>响应鼠标自动选中文本框内容</title></head><body><input id="a" type="text" value="请输入搜索词" onmouseover="selectInputContent(this.id)"/><script type="tex

  • js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色

    后台代码 复制代码 代码如下: /// <summary> /// 数据行绑定事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void gvProduct_RowDataBound(object sender, GridViewRowEventArgs e) {

  • 用javascript css实现GridView行背景色交替、鼠标划过行变色,点击行变色选中

    加上鼠标点击选择(其实只是点击后变个颜色,"选择"这个词在这里不合适),顺便把这个直接应用到GridView上,如果是其他的控件,或者直接的HTML,稍加修改也可以用上,这里仅提供一个思路.虽然GridView使用AlternatingRowStyle提供了交替行背景色的问题,但这个东西用着实在不爽,看它生成到HTML的那个table,那叫一个乱啊. 下面是代码,注释应该还算比较详细,比较适合初学者,可以把下面两个文件的代码直接复制到你的项目中直接执行.最下面有文件的下载地址,也可以直

  • 奇偶行高亮显示及鼠标划过高亮显示类

    花了点时间,封装成了一个类(附带一个添加样式的类),适合初学者,直接调用函数即可,无需改代码. 核心JavaScript代码: 奇或偶数行高亮显示及鼠标划过高亮显示类~@Mr.Think body{font-size:0.8em;letter-spacing:1px;font-family:"微软雅黑"; line-height:1.8em} h1{font-size:1em; font-weight:normal;} h1 a{background:#CFF; padding:2px

  • 一个简单但常用的javascript表格样式_鼠标划过行变色 简洁实现

    第一个太简单就不说了,第二个也很简单,但每个人都有不同的实现方法,下面给一个比较简洁的做法,支持IE6.IE7.FF2,其他浏览器未测试(可以扩展一下用到ASP.NET的GridView里): 鼠标划过表格行变色-简洁实现 #tb{width:666px;border-collapse:collapse;border:1px solid #EEE;font-size:14px;} #tb th{background:#EEE;border-bottom:1px solid #CCC;paddin

  • JavaScript+CSS相册特效实例代码

    嗯 就是这样一个例子,视频学到的一个特效,实际用处并不大,但是可以帮助理解JS语言和熟悉CSS3样式. 设计: 观察一张图片的变化,发现: 1.图片缩放(随机,并且不是同时运动) 1.从大到小 2.从小到大,透明度从1到0(在第一步运动完成后立马开始) 2.图片旋转(随机,并且不是同时运动的.需要在全部运动走完以后开始) 3. 因为每张图片是随机开始变换的,所以起始时间是不同的,这里可设置一个延迟器setTimeout,时间用random随机生成即可. 4. 中间需要用到自执行函数,因为setT

  • GridView中获取被点击行中的DropDownList和TextBox中的值

    aspx页面代码:通过点击GridView中的a标签获取被点击行中的下拉框和文本框中的值 复制代码 代码如下: <asp:GridView ID="GridView1" runat="server"> <Columns> <asp:BoundField HeaderText="ID" DataField="ID" /> <asp:BoundField HeaderText="

  • 绝对经典的滑轮新闻显示(javascript+css)实现

    绝对经典的滑轮新闻显示(javascript+css)很早就有了,今天又见到,拿出来大家分享一下... 效果如下图:screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this

  • JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果

    本文实例讲述了JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果.分享给大家供大家参考.具体如下: 这里演示JavaScript+CSS仿Mootools竖排黑色动画菜单,并非使用了Mootools,但效果却和使用了Mootools差不多,动画效果平滑,操作舒服,给菜单增色不少. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-css-mootools-style-demo/ 具体代码如下: <!DOCTYPE html

  • JavaScript+CSS实现仿天猫侧边网页菜单效果

    本文实例讲述了JavaScript+CSS实现仿天猫侧边网页菜单效果.分享给大家供大家参考.具体如下: 这是一款自己写的仿天猫的菜单效果,二级分类的功能已经实现,但没有美化,留着用的朋友自己完善吧,JS功能已经实现,鼠标移在主分类上,二级分类向右伸出展开,目前淘宝网.天猫购物.京东都在用的导航菜单特效,测试时候请先点击一下菜单,主菜单就显示出来了. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-css-ftamil-web-menu-st

  • JavaScript+CSS实现的可折叠二级菜单实例

    本文实例讲述了JavaScript+CSS实现的可折叠二级菜单.分享给大家供大家参考,具体如下: .aspx文件: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="NavigateMenu.aspx.cs" Inherits="NavigateMenu" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHT

  • 动态载入/删除/更新外部 JavaScript/Css 文件的代码

    动态载入 JavaScript/Csss 文件 传统加载外部JavaScript(*.js) 或者 Css(*.css)文件的方法是直接在<head>标签里面进行添加: 复制代码 代码如下: <head> <script type="text/javascript" src="myscript.js"></script> <link rel="stylesheet" type="te

随机推荐