方法一:
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>