Повторно выберите выделенную строку в datatable после перезагрузки страницы

0

Я использую datatable, где после нажатия строки страница перезагружается с дополнительными параметрами сообщения. Я пытаюсь добиться того, что после перезагрузки страницы выделенная строка снова подсвечивается.

Отрывки:

Jquery:

gTable = $('#goals').dataTable( { 
    "bProcessing": true,
    "bServerSide": true,
    "bLengthChange": false,
    "iDisplayLength":10,
    "sAjaxSource": "json_goals.php",
    "bJQueryUI": true,
    "sPaginationType": "full_numbers",
    "aoColumns" : [  null,null,null],
    "fnServerData": function ( sSource, aoData, fnCallback ) {
         aoData.push( { "name": "missionId", "value": <?php echo $id; ?> } );
                $.ajax( {
                "dataType": 'json',
                "type": "GET",
                "url": sSource,
                "cache": false,
                "data": aoData,
                "success": fnCallback
            } );
        },
    "fnRowCallback": function( nRow, aData, iDisplayIndex ) {
        if ( aData[0] == <?PHP echo $goalid; ?> ) { $('tr', nRow).addClass('highlight');} // this succeeds, tested with alert.
        return nRow;
        }
    });

CSS:

tr.highlight td{font-weight: bold;background-color: Yellow;}

HTML:

<table id="goals" class="display"><col style="width: 10%"/><col style="width: 20%"/><col style="width: 70%"/>
          <thead><tr>
          <th>goalId</th>
          <th>Goal Type</th>
          <th>Display Text</th>
          </tr></thead><tbody><tr><td colspan="3">Loading....</td></tr></tbody>
       </table>

Обновить:

$("#goals tbody tr").live('click',function(event) { $(gTable.fnSettings().aoData).each(function(){ $(this.nTr).removeClass('row_selected');}); $(event.target.parentNode).addClass('row_selected'); var aData = gTable.fnGetData(this); window.location.replace("missions.php?goalid=" + aData[0] + "&id=" + <?PHP echo $id;?> + "#tabs-5");});

Все работает отлично, за исключением того, что строка не подсвечивается. Любые идеи о том, как подойти к этому? Благодарю.

  • 0
    Я не вижу кода, который перезагружает страницу. Я не вижу кода, который отправляет или получает дополнительные параметры POST. Я не вижу кода, который добавляет событие щелчка к строке таблицы. Почему вы перезагружаете страницу? Вы используете AJAX в другом месте, поэтому вы не можете использовать AJAX вместо перезагрузки страницы?
  • 0
    Я добавил код перезагрузки. Причина, по которой я делаю POST, заключается в том, что в зависимости от выбранной строки показывается 1 из 17 различных форм. Все эти формы загружаются динамически на основе данных из базы данных. Мне было намного проще кодировать это таким образом, в основном потому, что я никогда раньше не работал с ajax;)
Теги:
datatable
highlight

1 ответ

0

Кажется, что ваш селектор jQuery $() не получает дескриптор требуемого элемента. Попробуйте использовать $('#goals tr').eq(nRow).addClass('highlight');

См. Это сообщение для получения дополнительной информации

  • 0
    Некоторое объяснение было бы хорошо.
  • 0
    Я исправил ошибку и дал объяснение

Ещё вопросы

Сообщество Overcoder
Наверх
Меню