2011-07-29 12 views
5

Chcę, aby dane jQuery automatycznie tworzyły kolumnę z numerem wiersza w pierwszej kolumnie, jak datagrid w VB.Dodaj kolumnę z numerem wiersza do datownika Jquery

Wygląda to tak:

enter image description here

Ktoś wie jak to zrobić?

+0

Jak ładujesz pliki danych? pokaż jakiś kod – naveen

+0

To, czego potrzebujesz, to po prostu policzyć wynik (w json lub tablicy), a następnie iterować go, aby wygenerować liczbę zsekwencjonowaną i zbudować ją wraz z innymi danymi wynikowymi. – toopay

Odpowiedz

10

Po prostu definiujesz pustą kolumnę w aoColumns.

Następnie w funkcji fnRowCallback właśnie edytujesz kolumnę w dowolny sposób. To wywołanie zwrotne jest uruchamiane za każdym razem, gdy tworzony jest nowy wiersz.

Basicly jeśli pierwsza kolumna ma numer wiersza, można po prostu zrobić to w fnRowCallback:

var index = iDisplayIndex +1; 
$('td:eq(0)',nRow).html(index); 
return nRow; 
+0

thx, próbowałem go i to był sukces: D teraz, jak mogę zrobić pierwszy coloumn nie sortowalne ?? – Xinez

+1

o tak, wydaje się, że metoda była sukcesem, ale kiedy zmieniam numer strony w datables, numer wiersza nadal wynosi 1, jak zrobić ciągły numer do ostatniej strony? – Xinez

+0

Och, więc chcesz użyć: iDisplayIndexFull :) – Pehmolelu

16

Wystarczy napisać render funkcja:

{ 
    "data": "id", 
    render: function (data, type, row, meta) { 
     return meta.row + meta.settings._iDisplayStart + 1; 
    } 
} 
+0

To wszystko. NICE & Clean (; –

+0

To brzmiało jak najmilsze rozwiązanie , ale jak tylko posortuję według kolumny, numery zostaną zmazane –

1

Jak komentuje zarówno @Pehmolelu i @ Odpowiedź Tao Wanga nie działa dobrze dla mnie. Musiałam pójść z tym, co radzi kolumna IndexTables Index: https://datatables.net/examples/api/counter_columns.html

Zauważ, że w przypadku mnie nawet konfiguracja kolumn przechodzi przez wywołanie API mojego serwera webapp (i czasami mam liczniki wierszy, czasami nie), przed kolumną licznika znajdują się 3 kolumny systemowe, dlatego indeks kolumny wynosi 3, ale musisz go dostosować do swoich potrzeb.

t.on('order.dt search.dt', function() { 
    t.column(3, {search:'applied', order:'applied'}).nodes().each(function (cell, i) { 
     cell.innerHTML = i+1; 
    }); 
}).draw(); 

Ponadto, jeśli roztwór nie jest tak skomplikowane jak mój link powyżej pokazuje również, w jaki sposób dodać tę kolumnę w unsortable + niezbadanej sposób (znów trzeba dostosować indeks kolumny do swoich potrzeb):

var t = $('#example').DataTable({ 
    "columnDefs": [{ 
     "searchable": false, 
     "orderable": false, 
     "targets": 3 
    }], 
    "order": [[4, 'asc']] 
}); 

Istnieje również wtyczka, którą możesz wykorzystać zamiast własnego kodu.

Powiązane problemy