用javascript/css实现GridView行背景色交替、点击行变色
前几天在博问里发现有人问关于 GridView点击行变色 的问题,突然想起很久很久以前,写过一篇文章 一个简单但常用的表格样式--鼠标划过行变色--简洁实现 ,是关于表格行颜色交替和鼠标指向时变色的,正好今天把那一篇补充和扩展一下,加上鼠标点击选择(其实只是点击后变个颜色,“选择”这个词在这里不合适),顺便把这个直接应用到GridView上,如果是其他的控件,或者直接的HTML,稍加修改也可以用上,这里仅提供一个思路。虽然GridView 使用AlternatingRowStyle提供了交替行背景色的问题,但这个东西用着实在不爽,看它生成到HTML的那个table,那叫一个乱啊。
下面是代码,注释应该还算比较详细,比较适合初学者,可以把下面两个文件的代码直接复制到你的项目中直接执行。最下面有文件的下载地址,也可以直接下载后运行,代码在IE7和Firefox2下测试通过,有任何问题,请在下面留言,我将尽量及时回复。
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.style.background = i%2==0?NormalColor:AlterColor;
//如果指定了鼠标指向的背景色,则添加onmouseover/onmouseout事件
//处于选中状态的行发生这两个事件时不改变颜色
if(HoverColor != ""){
AllRows.onmouseover = function(){if(!this.selected)this.style.background = HoverColor;}
if(i%2 == 0){
AllRows.onmouseout = function(){if(!this.selected)this.style.background = NormalColor;}
}
else{
AllRows.onmouseout = function(){if(!this.selected)this.style.background = AlterColor;}
}
}
//如果指定了鼠标点击的背景色,则添加onclick事件
//在事件响应中修改被点击行的选中状态
if(SelectColor != ""){
AllRows.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();
}
}
分享到:
相关推荐
本文将详细介绍如何使用JavaScript与CSS技术来实现`GridView`中的行背景颜色自定义功能,包括背景颜色的交替显示、鼠标悬停时颜色变化以及点击行后的颜色变化。 #### 二、实现原理 实现这些功能主要依靠以下几个...
在本文中,我们将讨论如何使用它们来实现GridView行背景色的交替、鼠标划过行变色以及点击行变色选中。GridView通常是在ASP.NET中用于显示数据的控件,而JavaScript则可以用来增强用户交互体验。 首先,GridView在...
在实际应用中,我们有时需要实现用户交互效果,例如,当用户点击GridView的某一行时,该行背景色发生变化,以提供更好的用户体验。这个例子就展示了如何实现这样的功能。 首先,我们需要在后台代码(C#)中为...
### GridView选中变色实现方法详解 在.NET框架下,特别是在ASP.NET中,GridView控件是一种非常常用的用于显示数据的工具。它不仅功能强大,而且易于使用,支持各种数据源和自定义显示样式。其中,为GridView添加行...
要实现“GridView选定行变色”的效果,主要涉及以下几个步骤: 1. **定义选择样式**:我们需要创建一个新的CSS类,用于指定被选中行的样式。例如,可以定义一个名为`SelectedRowStyle`的CSS类,设置背景颜色、字体...
5. **数据绑定时设置颜色**:如果需要根据数据动态设置行的背景色,可以在GridView的数据绑定事件(如DataBound)中检查数据源中的字段,然后根据字段值设置行的背景颜色。 6. **JavaScript/jQuery**:在客户端,...
GridView固定表头(不用javascript只用CSS,2行代码,很好用) GridView合并表头多重表头无错完美版(以合并3列3行举例) GridView突出显示某一单元格(例如金额低于多少,分数不及格等) GridView加入自动求和求平均...
在本案例中,我们将讨论如何实现一个非常简单易用的功能,即当鼠标移动到GridView的某一行或者用户点击某一行时,该行的背景色发生变化。这个功能可以提升用户的交互体验,使用户更易于区分当前选中的行。 首先,`...
Android 点击ListView 或GridView 的一个item 使其里面textview变色 详情可访问博客地址:http: blog csdn net gaolei1201 article details 39084159
数据行变色可以通过CSS样式或者GridView的RowDataBound事件来实现,根据行的状态或数据项的值动态设置背景色。 5. **前端交互**:前端展示和交互是用户体验的关键。在实现GridView全选效果时,可能需要用到...
通过以上步骤,我们就能实现GridView中的TextView在选中时背景变色的效果。这是一个基本的实现方式,实际项目中可能还需要考虑其他因素,如动画效果、多选模式等。此外,还可以通过使用StateListDrawable或者 ...
例如,使用jQuery,我们可以为GridView的每一行添加一个点击事件,改变背景颜色,并移除其他行的颜色。 ```html <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> $(document).ready...
在GridView中,通过自定义样式或者使用内置的AlternatingRowStyle属性,我们可以使偶数行和奇数行显示不同的背景色,以提高用户的阅读体验。例如,可以设置` AlternatingRowStyle-BackColor`属性为一种浅色,而`....
在`GridViewRowDataBound`事件处理程序中,可以通过`e.Row.Attributes`为当前行添加JavaScript事件,如`onmouseover`和`onmouseout`,从而实现在鼠标悬停时改变行的背景色。 - **示例代码**: ```csharp ...
这个示例展示了一种方法,通过JavaScript实现GridView的单选效果,同时动态改变行的背景色,包括交替行、选中行以及鼠标悬停时的行。下面我们将详细探讨这些功能的实现。 首先,在后台代码中,我们有一个名为`...
当鼠标悬停在GridView某一行时改变其背景色主要依赖于JavaScript的`onmouseover`和`onmouseout`事件。具体来说: - `onmouseover`事件:当鼠标指针进入元素时触发。 - `onmouseout`事件:当鼠标指针离开元素时触发。...
在本主题中,我们将深入探讨如何使用GridView来创建一个带有自定义背景色和点击事件的简单表格。以下是对这个话题的详细解释: 1. GridView基本概念: GridView继承自AbsListView,它将数据项按照行和列的方式排列...
GridView固定表头(不用javascript只用CSS,2行代码,很好用) GridView合并表头多重表头无错完美版(以合并3列3行举例) GridView突出显示某一单元格(例如金额低于多少,分数不及格等) GridView加入自动求和求平均...
asp.net,GridView控件中鼠标移动到GridView某一行时该行背景色发生变化。