Чтобы сохранить исходный цвет выделенной строки, чтобы он возвращался при выделении другой строки, попробуйте следующее решение.
JavaScript на странице:
var lastStyle;
var lastRowID;
function highlightRow(rowID, updatedStyle) {
var rowClicked = document.getElementById(rowID);
restoreRowColor(lastRowID, lastStyle);
lastStyle = rowClicked.className;
lastRowID = rowID;
rowClicked.className = "highlightRow";
}
function restoreRowColor(rowID, originalStyle) {
var previousRowClicked = document.getElementById(rowID);
if (previousRowClicked != null) {
previousRowClicked.className = originalStyle;
}
}
Стили на странице
.normalRow{background-color: #FFFFFF;}
.alternateRow{background-color: #D3D3D3;}
.highlightRow{background-color: #F0E68C;}
код
Private Sub myGridView_RowCreated(ByVal sender As Object,
ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs)
Handles myGridView.RowCreated
Dim rowID As String = "row" + e.Row.RowIndex.ToString
If e.Row.RowState = DataControlRowState.Normal Then
e.Row.CssClass = "normalRow"
ElseIf e.Row.RowState = DataControlRowState.Alternate Then
e.Row.CssClass = "alternateRow"
End If
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.Attributes.Add("id", rowID)
e.Row.Attributes.Add("onclick",
"highlightRow('" & rowID & "', '" & e.Row.CssClass & "')")
End If
End Sub
Работает в Chrome 12, Firefox 3.6 и IE 8 (так как это то, что у меня под рукой).