Я подозреваю, что это из-за того, что я недостаточно знаю о жизненном цикле страницы в asp.net, но у меня странная проблема.
У меня есть сетка, из которой пользователь выбирает строку.Выбранная строка должна иметь цвет «aqua», остальные - белые.
Я использую событие на RowDataBound, чтобы сделать «подсветку», чтобы выделить строку, над которой пользователь наводит курсор.Когда пользователь отключается, он должен вернуться к цвету, который был ранее.(Белый для невыбранной строки или аква для выбранной строки.)
protected void gvCounts_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (gvCounts.SelectedIndex == -1) { gvCounts.SelectedIndex = 0; }
string oldColor = "white";
if (e.Row.RowIndex == gvCounts.SelectedIndex)
{
e.Row.BackColor = System.Drawing.Color.Aqua;
oldColor = "aqua";
}
e.Row.Attributes["onmouseover"] = "this.style.cursor='hand';this.style.backgroundColor='yellow';";
e.Row.Attributes["onmouseout"] = "this.style.backgroundColor='" + oldColor + "';";
e.Row.Attributes["onclick"] = ClientScript.GetPostBackClientHyperlink(this.gvCounts, "Select$" + e.Row.RowIndex);
}
}
По какой-то причине выбранная строка всегда стоит за тем, что пользователь нажимает.Когда страница сначала загружается, выбранная строка становится равной 0. Если я затем нажимаю на строку 2, страница обновляется, и строка 0 по-прежнему остается голубой.
Если я затем нажимаю строку 4, строка 2 становится выбраннойстрока.Если я щелкну по другой строке, будет выбрана строка 4 - она всегда находится «позади» выбранной строки.