2015-05-11 1 views
2

Я пытаюсь использовать jQuery DataTables (http://datatables.net/) с плагином для заказа строк (http://code.google.com/p/jquery-datatables-row-reordering/wiki/Index). Первоначально переупорядочение строк выглядело так, как будто это сработало, однако была ошибка javascript «Ошибка: ошибка синтаксиса, нераспознанное выражение: #». Поэтому я реализовал решение, описанное здесь: http://datatables.net/forums/discussion/19011/drag-and-drop-row-reordering-issue Предоставление уникальных идентификаторов tr элементов. Теперь ошибок javascript нет. Однако переупорядочение строк сейчас не работает. Я перетаскиваю строку, но когда я ее бросаю, таблица просто возвращается в прежнее состояние.jquery Переупорядочение строки данных DataTables: возврат возвращается после удаления

Вот полный HTML-файл с JavaScript: http://pastebin.com/2P9hJ7n2

Кто-нибудь еще сталкивался с этой проблемой? Если да, то как вы это решили?

Я пытался покопаться в строке переназначения JavaScript, и это выглядит как проблема захвата текущей и предыдущей позиции строки:

// fyi: properties.iIndexColumn is 0 
var iCurrentPosition = oTable.fnGetData(tr, properties.iIndexColumn); 
//... 
oTable.fnGetData(trPrevious[0], properties.iIndexColumn); 

Безотносительно он ожидает получить от fnGetData изменилось. Я повторил то, что oTable.fnGetData (tr, i) возвращает для пары значений i, и, похоже, это ячейки строки.

Я предполагаю, что реализация DataTables изменилась с момента написания этого плагина. Мне просто интересно, легко ли это решить или нет.

ответ

2

Как вы можете прочитать в wiki-link вы предоставили,

  • Each TR element must have id attribute.
  • One column in the table should be indexing column. This column will be used for determining position of the row in the table. By default this is first column in the table. You can see structure of the table on the live example page.

В "непризнанный выражение: #" был связан с первым спросом; что вы не можете перемещать строки вокруг, связано со вторым. Вам просто не хватает индексной колонки . Как вы уже выяснили, с отсутствующим <tr> #ID, вы можете легко создать этот столбец программно:

$("#mySuperTable thead tr").prepend('<th>#</td>');  
var count = $("#mySuperTable tbody tr").length-1; 
$("#mySuperTable tbody tr").each(function(i, tr) { 
    $(tr).attr('id', 'id'+i); 
    $(tr).prepend('<td>'+parseInt(i+1)+'</td>');  
    if (i==count) { 
     $("#mySuperTable").dataTable({ 
      //...initialization options 
     }).rowReordering(); 
    }  
}); 

Теперь RowReordering работает с таблицей ->http://jsfiddle.net/gy8s3hoa/

Обратите внимание на демо выше работает DataTables 1.10 .Икс. Проблема не имеет ничего общего с версиями dataTables или некоторыми изменениями внутри внутренних компонентов dataTables, это просто о том, как создается плагин RowReordering. Это не очень элегантно, если вы спросите меня. Плагин должен создать id и индексный столбец, который ему нужен (и сделать его скрытым) сам по себе.

 Смежные вопросы

  • Нет связанных вопросов^_^