2013-05-20 3 views
2

Можно ли добавить новую строку после второй/третьей/... n-й строки в JQuery datatable? Я использовал этот метод fnAddData ([...]). Работает так, как ожидалось. Но мне нужно добавить запись между двумя строками. Пожалуйста, кто-нибудь мне помочь ..JQuery datatable добавить новую строку по указанному индексу

+0

Не могли бы вы создать jsFiddle, показывающий проблему? – Justin

+0

http://datatables.net/forums/discussion/11899/unable-to-add-row-in-the-middle-of-a-data-table/p1 Он предлагает «включить сортировку, но отключить сортировку и использование пользователей» aaSortingFixed для сортировки сил всегда встречаются в скрытом столбце - столбце индекса. Затем, когда вы вставляете новую строку, читайте индекс сортировки для строки, которую хотите вставить новую строку после, и установите индекс сортировки для новой строки чтобы быть выше, поэтому он будет вставлен в правильное место :-). Вам также нужно будет перебрать все строки и увеличить индекс сортировки для существующих строк, которые выше точки вставки « –

ответ

3

Я разделяю с вами, что я сделал:

// for example you want to insert after the 2nd row 
var numberOfRowAfterYouWantToInsert = 2; 
var rowAfterYouWantToInsert = $("#yourTableId tr").eq(numberOfRowAfterYouWantToInsert); 
var rowsAfter_rowAfterYouWantToInsert = rowAfterYouWantToInsert.nextAll(); 
var standbyTable = $("<table>"); 
// remove rows by putting over to a standby table 
standbyTable.append(rowsAfter_rowAfterYouWantToInsert); 
// just did an empty tr here 
var tr = $("<tr>"); 
// append it 
$("#yourTableId").append(tr); 
// and put back those removed rows to the original table 
$("#tableID").append(rowsAfter_rowAfterYouWantToInsert); 

Это решение является простым, удобным для чтения, и главное преимущество: она работает :) Надеюсь, что это помогает Вам!

EDIT: я понял, что есть гораздо более простое решение:

// for example you want to insert after the 2nd row 
var numberOfRowAfterYouWantToInsert = 2; 
var rowAfterYouWantToInsert = $("#yourTableId tr").eq(numberOfRowAfterYouWantToInsert); 
// new row with two cells 
var tr = $("<tr><td>asd</td><td>qwe</td></tr>"); 
rowAfterYouWantToInsert.after(tr); 
+0

Это не работает для JQuery Datatable. Когда вы сортируете таблицу, эта строка теряется. –

+0

@LucioFonseca если вы не используете $ ("# yourTableId"). Trigger ("update"); после добавления строки, он будет потерян (если я хорошо знаю о сортировке) – SzGyD

1

Это работает для меня. Возьмите массив из datatable, сплайсинга в нужном вам индексе, затем перерисуйте datatable. Таким образом, если вам нужно сделать перерисовку - добавленные вами значения будут по-прежнему находиться в таблице.

var newRow = [1, 2, 3]; // new row in the datatable 
var index = 4; // index for the new row to be added 
var currentRows = datatable.data().toArray(); // current table data 
currentRows.splice(index, 0, newRow); 

datatable.clear(); 
datatable.rows.add(currentRows); 
datatable.draw(); 
Смежные вопросы