2011-10-19 66 views
1

我在ASP.NET中编写了以下GridView代码。我将AlternatingRow款式的BackColor设置为素色。其余行设置为白色。如何更改JavaScript中的onclick事件中的gridview行颜色?

此代码存在我grdRequests_RowDataBound事件中:

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    e.Row.Attributes.Add("onclick", "ChangeRowColor(this)"); 
    e.Row.Attributes.Add("onmouseover", "this.style.cursor=\'pointer\'"); 
} 

中的JavaScript ChangeRowColor上面的代码如下:

function ChangeRowColor(row) 
{ 
    if (previousRow == row) 
     return;   

    else if (previousRow != null) 
     var color = row.style.backgroundColor; 

    if (previousRow != null) { 

     alert(color) 

     if (color == "bisque") { 
      previousRow.style.backgroundColor = "white"; 
     } 
     else if (color == "white") { 
      previousRow.style.backgroundColor = "bisque"; 
     }   
    } 

    row.style.backgroundColor = "#ffffda"; 
    previousRow = row;  
} 

当我点击该行,我需要改变喜欢黄颜色。选择另一行后,我需要将上一行的颜色切换回原来的颜色,但在我的代码中这不起作用。有什么建议么?

+0

你在项目中使用(或能够使用)jQuery吗?有没有更好的解决方案... – Marc

+0

不,我不使用jquery任何方式发送我的代码我会尝试 – hmk

+0

http://stackoverflow.com/questions/5630082/how-to-change-cell-background-颜色在点击单元格在表 –

回答

1

你可以做这样的...

protected void MyGridView_RowCreated(object sender, GridViewRowEventArgs e) 
{ 

    string rowStyle = "this.style.backgroundColor 
    = 'yellow'"; 
    string rowStyleClickedTwice = 
    "this.style.backgroundColor = 'blue'"; 
    string rowID = String.Empty; 

    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     rowID = "row"+e.Row.RowIndex; 

     e.Row.Attributes.Add("id", 
     "row"+e.Row.RowIndex); 
     e.Row.Attributes.Add("onclick", 
     "ChangeRowColor(" +"'" + rowID + "'" + ")"); 
    }  
} 

这是Java Script代码:

<input type="hidden" id="hiddenColor" /> 
<script language ="javascript" type="text/javascript"> 

    document.body.style.cursor = 'pointer'; 


function ChangeRowColor(rowID) 
{ 
    var color = document.getElementById(rowID).style.backgroundColor; 
    alert(color); 

    if(color != 'yellow') 
    document.getElementById("hiddenColor").style.backgroundColor = color; 

    alert(oldColor); 

    if(color == 'yellow') 
    document.getElementById(rowID).style.backgroundColor = document.getElementById("hiddenColor").style.backgroundColor; 
    else 
    document.getElementById(rowID).style.backgroundColor = 'yellow';    

    } 
</script> 

我希望它会帮助你.. ..

+0

谢谢你它工作 – hmk

0
in ur function use the row object to get the rows to loop over them and return them to there default color 

    function ChangeRowColor(row) 
    { 

      var rows = row.parentNode.getElementsByTagName('TR'); 
      //loop over all rows and set there colors to default 
      for(var i =0;i<rows.length;i++) 
      { 
      rows[i].style.backgroundColor= 'White'; //if its your default color 
      }  
     //set the current row to be with the needed color 
     row.style.backgroundColor = "YELLOW" //if this is the color needed onclick; 
    } 

问候

0

你可以调用javascript f GridView RowDataBound事件中的联合。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
      { 
      if (e.Row.RowType == DataControlRowType.DataRow)  
        { 
       e.Row.Attributes.Add("onClick", "ChangeColor('" + "GridView1','" + (e.Row.RowIndex+1).ToString() + "')"); 
      } 
     } 




    function ChangeColor(GridViewId, SelectedRowId) { 
     var GridViewControl = document.getElementById(GridViewId); 
     if (GridViewControl != null) { 
      var GridViewRows = GridViewControl.rows; 
      if (GridViewRows != null) 
      { 
       var SelectedRow = GridViewRows[SelectedRowId]; 
       //Remove Selected Row color if any 
       for (var i = 1; i < GridViewRows.length; i++) { 
        var row = GridViewRows[i]; 
        if (row == SelectedRow) { 
         //Apply Yellow color to selected Row 
         row.style.backgroundColor = "#ffffda"; 
        } 
        else { 
         //Apply White color to rest of rows 
         row.style.backgroundColor = "#ffffff"; 
        } 
      } 

      } 
     } 

    } 
相关问题