Editable + EDataTables

Использую в проекте для таблиц с сортировками и пагинацией расширение EDataTables, которое основано на одноименном плагине jQuery : www.datatables.net.

Суть расширения и отличие от Yii GridWiev то , что данные приходят через ajax; и сортировка, и пагинация, и фильтры;

В процессе реализации общей задачи необходимо было добавить в таблицу столбец с редактируемым полем. Задачку решил быстро благодаря поиску по этому форуму.

Но проблема возникла при использовании сортировки. Суть ее вот в чем : Editable при загрузке страницы формирует JS для редактируемых полей, и добавляет css редактируемым полям. Например :




CSS

class="editable editable-click" 


JS

jQuery('body').tooltip({'selector':'a[rel=tooltip]'});

jQuery('body').popover({'selector':'a[rel=popover]'});

$('a[rel="roles_45"]').editable({'disabled':false,'showbuttons':false,'name':'roles', .... 



При сортировке данные таблицы приходят асинхронно, и редактирование не работает, так как JS не сформировался под новые поля.

Подскажите, как подружить Editable с динамической таблицей ?

Добавьте колонкам которые нужно редактировать некий класс, например


class="edit"

После обновления грида, в afterAjaxUpdate добавьте бинд editable:




$('.edit').editable({'disabled':false,'showbuttons':false,'name':'roles'});



Проблему разрешил похожим способом, но скорее костылем:




<? 

$exp = Users::model()->findAll("roles='Exp' OR roles='Exp1' OR roles='Exp2' OR roles='Exp3'");

    $nums = array();

    foreach($exp as $num){

        $nums[] = $num->id;

    }

?>


$(document).ready(function () {


        $('tbody').on('mouseover', 'tr', function(){

        <? foreach($nums as $id_k=>$id_v): ?>

            $('a[rel="roles_<?=$id_v ?>"]').editable({'disabled':false,'showbuttons':false,'name':'roles','title':'Выберите роль','value':null,'url':'<?= Yii::app()->createUrl('Autorized/updateProfile') ?>','type':'select','placement':'top','source':[{'value':'Exp','text':'Эксперт0'},{'value':'Exp1','text':'Эксперт1'},{'value':'Exp2','text':'Эксперт2'},{'value':'Exp3','text':'Эксперт3'}]});

        <? endforeach; ?>

        });


    });






Так как пока это еденичное место использвания совместно этих двух расширений, меня это устроило. Все работает как хотел. Но все-равно интересует как правильно реализовать задачу ?