Napisałem następujące GridView Kod w ASP.NET. Ustawiam AlternatingRow styl's BackColor do bisque. Pozostałe wiersze są ustawione na białe.

Ten kod istnieje w moim wydarzeniu grdRequests_RowDataBound:

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

Powyższy kod JavaScript {{X0} jest następujący:

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;    
}

Kiedy klikam wiersz, muszę zmienić kolor jak żółty. Po wybraniu innego wiersza muszę przełączyć kolor poprzedniego wiersza z powrotem do starego koloru, ale w moim kodzie nie działa. Jakieś sugestie?

1
hmk 19 październik 2011, 14:06

2 odpowiedzi

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;
     }

Pozdrowienia

0
Marwan 19 październik 2011, 13:35

Możesz zadzwonić do funkcji JavaScript w zdarzeniu 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";
                    }
            }

            }
        }

    }
0
pravprab 8 lipiec 2016, 05:17