重写GridView实现单击行变色的效果

本文介绍了一种通过继承ASP.NET中的GridView控件来自定义点击行时背景色和字体颜色的方法,并提供了具体的实现代码及示例。

 继承GridView控件加入ClickBackGroundColor和ClickFontColor属性,其中ClickBackGroundColor属性是设置单击当前行时的背景色,ClickFontColor是设置单击当前行时的字体颜色.默认单击行不变色,代码如下:

 

using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
namespace MyLabel
{
    
public class MyGridView:GridView
    
{
        
public MyGridView()
        
{
        }

        [Browsable(
true)]
        [Category(
"Appearance")]
        [Description(
"设置单击当前行时当前行的背景色")]
        
public virtual Color ClickBackGroundColor
        
{
            
get
            
{
                
return ViewState["ClickBackGroundColor"]!=null?(Color)ViewState["ClickBackGroundColor"]:Color.Empty;
            }

            
set
            
{

                ViewState[
"ClickBackGroundColor"= value;
            }

        }

        [Browsable(
true)]
        [Category(
"Appearance")]
        [Description(
"设置单击当前行时当前行的字体背景色")]
        
public virtual Color ClickFontColor
        
{
            
get
            
{
                
return ViewState["ClickFontColor"!= null ? (Color)ViewState["ClickFontColor"] : Color.Empty;
            }

            
set
            
{

                ViewState[
"ClickFontColor"= value;
            }

        }

        
protected override void OnRowDataBound(GridViewRowEventArgs e)
        
{
            
if (ClickBackGroundColor != null && ClickFontColor != null)
            
{
                
if (e.Row.RowType == DataControlRowType.DataRow)
                
{
                    
if (e.Row.RowIndex != -1)
                    
{

                        e.Row.Attributes[
"onclick"= "if(window.oldtr!=null){window.oldtr.runtimeStyle.cssText= ' ';}this.runtimeStyle.cssText= 'background-color:" + ClickBackGroundColor.ToString() + ";color:" + ClickFontColor.ToString() + " ';window.oldtr=this ";
                    }

                }

            }

            
base.OnRowDataBound(e);
        }

    }

}


前台代码如下:

 

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

<%@ Register Assembly="MyLabel" Namespace="MyLabel" TagPrefix="cc1" %>

<%@ Register Src="AspNetPager.ascx" TagName="AspNetPager" TagPrefix="uc1" %>



<!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 runat="server">
    
<title>无标题页</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
&nbsp;
        
<cc1:MyGridView ID="GridView1" runat="server"  AllowPaging="false" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" PagerSettings-Visible="false"
                    Width
="100%" height="35" ClickBackGroundColor="#ffccff" ClickFontColor="#ffffff">
         
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                    
<RowStyle BackColor="#EFF3FB" />
                    
<EditRowStyle BackColor="#2461BF" />
                    
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />  
                    
<PagerStyle ForeColor="White" VerticalAlign="Top" BackColor="Transparent"  />                 
                    
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                    
<AlternatingRowStyle BackColor="White" />
                    
<Columns>
                        
<asp:TemplateField HeaderText="序号">
                            
<ItemTemplate>
                                
<%# Container.DataItemIndex+1 %>
                            
</ItemTemplate>
                        
</asp:TemplateField>
                        
<asp:BoundField DataField="I_BriefnessID" HeaderText="ID" />
                        
<asp:BoundField DataField="I_KMID" HeaderText="科目" />
                        
<asp:BoundField DataField="C_Recno" HeaderText="试题号" />         
                        
<asp:BoundField DataField="M_Title" HeaderText="题面" />
                        
<asp:BoundField DataField="C_Answer" HeaderText="答案" />  

                    
</Columns>
        
</cc1:MyGridView>
    
</div>
    
<div>
        
<uc1:AspNetPager ID="AspNetPager1" runat="server" />
        
</div>
    
</form>
</body>
</html>

 

下面运行后的效果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值