Gridview SelectedIndex "лаг" с обратной передачей - PullRequest
0 голосов
/ 21 февраля 2011

Я подозреваю, что это из-за того, что я недостаточно знаю о жизненном цикле страницы в 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 - она ​​всегда находится «позади» выбранной строки.

1 Ответ

0 голосов
/ 21 февраля 2011

Я не запускал событие Gridview.OnSelectedIndexChanged. Исправлено это путем добавления метода для перерисовки страницы при запуске.

...