GridView控件双击某行变色【整理】

方法一:

1、在 GridView1_RowDataBound 事件中添加:

{

  e.Row.ID = "tr_" + ((int)ViewState["rowID"]);

  e.Row.Attributes.Add("style", "background-color:#FFFFFF;");

  e.Row.Attributes.Add("ondblclick", "setValueByTr(this);");

  ViewState["rowID"] = ((int)ViewState["rowID"]) + 1;

}

2、在 Page_Load 事件中添加:

{

  if (!IsPostBack)

    {

       ViewState["rowID"] = 1;

  }

}

3、页面加上js代码:

<script type="text/javascript" language="javascript">

        var par = "";

        function setValueByTr(obj) {

            var trid = obj.id;

            if (par == "" || par == trid) {

                document.getElementById(trid).style.backgroundColor = "#6699ff";

                par = obj.id;

            } else {

                document.getElementById(par).style.backgroundColor = "#FFFFFF";

                document.getElementById(trid).style.backgroundColor = "#6699ff";

                par = obj.id;

            }

        }

</script>

这种方法有个缺陷,就是如果gridview的行有编辑、删除或浏览等事件,那么这些按钮需要点击两次才会执行,而且该行双击后的背景色会丢失。

下面这个是改良版,非原创,是网上搜到的:

方法二:

1、在 GridView1_RowDataBound 事件中添加:

 {

  e.Row.Attributes["class"] = "trpp";

  e.Row.Attributes.Add("ondblclick", "setValueByTr(this)");

 }

2、不需要

3、页面加上js代码:

<script type="text/javascript" language="javascript">

//获取所有class

function getElementsByClassName(n) {

  var classElements = [], allElements = document.getElementsByTagName('*');

  for (var i = 0; i < allElements.length; i++) {

    if (allElements[i].className == n) {

      classElements[classElements.length] = allElements[i];

    }

  }

  return classElements;

}

//先全部取消再给当前赋值

function setValueByTr(obj) {

  var redClassElements = getElementsByClassName('trpp');

  for (var i = 0; i < redClassElements.length; i++) {

    redClassElements[i].style.backgroundColor = "#fff";

  }

  obj.style.backgroundColor = "#6699ff";

}

</script>

转载于:https://www.cnblogs.com/linyc/archive/2011/03/26/1996245.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值