bjay tiamsic Ответов: 1

Выделите строки с помощью складной вложенной сетки


Привет.

Я создаю веб-страницу со складывающейся сеткой, поэтому мой gridview вложен и может быть развернут/свернут при нажатии на знак плюс.

Теперь мне нужно выделить строку в строке только со знаком плюс (не включая расширенный div)

Я использовал событие onclick на стороне клиента для строки gridview, которой я присваиваю значение onclick на datarowbound.

var prevRowIndex;

       function ChangeRowColor(row, rowIndex) {
           var parent = document.getElementById(row);
           var currentRowIndex = parseInt(rowIndex) + 1;

           if (prevRowIndex == currentRowIndex) {
               return;
           } else if (prevRowIndex != null) {
               parent.rows[prevRowIndex].style.backgroundColor = "#FFFFFF";
           }

           parent.rows[currentRowIndex].style.backgroundColor = "#FFFFD6";
           prevRowIndex = currentRowIndex;


А вот и гребец

protected void gvStudent_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Attributes.Add("onclick", string.Format("ChangeRowColor('{0}','{1}');", e.Row.ClientID, e.Row.RowIndex));
}





Моя проблема заключается в том, что когда индекс строки 0 расширяется и я нажимаю на индекс строки 1, расширенный div индекса строки 0 подсвечивается, я думаю, потому что он читается как новая строка и становится индексом строки 1

Что я уже пробовал:

Эту идею я адаптировал по ссылке ниже

Выделить GridView В Строке Нажать И Удерживать Выбранную Строку На Обратной Передачи[^]

1 Ответов

Рейтинг:
10

bjay tiamsic

Разобрался с этим, используя вот это

var currentRowIndex = parseInt(rowIndex) + (parseInt(rowIndex) + 1);

           if (rowIndex == 0) {
               currentRowIndex = parseInt(rowIndex) + 1;
           }