2014-01-14 10 views

Antwort

17

Verwenden Sie den fnCreatedRow Rückruf. Es empfiehlt sich, das Attribut id der Tabellenzeile beim Erstellen der Zeile festzulegen. Verwenden Sie, was die API zur Verfügung gestellt hat, und Sie müssen nicht hacken oder haben unordentlichen Code

Diese Funktion wird aufgerufen, wenn ein TR-Element erstellt (und alle TD Kindelemente wurden eingefügt), oder registriert, wenn Sie verwenden eine DOM-Quelle, die die Manipulation des TR-Elements ermöglicht (Hinzufügen von Klassen usw.).

//initialiase dataTable and set config options 
var table = $('#example').dataTable({ 
    .... 
    'fnCreatedRow': function (nRow, aData, iDataIndex) { 
     $(nRow).attr('id', 'my' + iDataIndex); // or whatever you choose to set as the id 
    }, 
    .... 
}); 

// add data to table post-initialisation 
table.fnAddData([ 
    'col_value_1', 
    'col_value_2', 
    'col_value_3', 
    'col_value_4' 
]); 
+1

Vielen Dank für Ihren Beitrag! - Genau das, was ich gesucht habe! – sairn

+1

Man könnte meinen, dass es beim Hinzufügen einer Zeile einfacher ist, dies zu tun. Ich verwende eine authentifizierte, serialisierte, stark verarbeitete API zum Abrufen von Daten, daher muss ich die vom Server bereitgestellten IDs in den untergeordneten Elementen von tds verwenden und dann diesen Ereignisrückruf verwenden, um vom untergeordneten Element in die Zeile zu übertragen. Dies ist eine völlig rücksichtsvolle Art, dies zu tun. –

+1

stimme ich zu. Im Ernst, Sie können keine ID für eine Zeile angeben? Dies ist wie sehr grundlegende Funktionalität. Wie sonst würden Sie vorhandene Zeilen bearbeiten/entfernen, wenn Sie sie nicht nach IDs ausrichten könnten? Sicher, sie erhalten automatisch IDs, aber wie oft möchten Sie Ihre eigenen IDs verwenden, da die Anwendung bereits erstellt wurde? –

0

Hoffnung Code unten wird Ihnen helfen,

var rowid = $('#example').dataTable().fnAddData([ 
    "col_value_1", 
    "col_value_2", 
    "col_value_3", 
    "col_value_4" ]); 
var theNode = $('#example').dataTable().fnSettings().aoData[rowid[0]].nTr; 
theNode.setAttribute('id','your value'); 
7

Dieser arbeitete für mich

var MyUniqueID = "tr123"; // this is the uniqueId. 
var rowIndex = $('#MyDataTable').dataTable().fnAddData([ "column1Data", "column2Data"]); 
var row = $('#MyDataTable').dataTable().fnGetNodes(rowIndex); 
$(row).attr('id', MyUniqueID); 
+0

dank bro, du hast meine zeit gerettet – GuRu

1

Wenn Sie row.add() verwenden, es ist einfach die ID zu setzen:

var table = $('#example').DataTable(); 
    var rowNode = table.row.add([ 
     "col_value_1", 
     "col_value_2", 
     "col_value_3", 
     "col_value_4" 
    ]).node(); 

    $(rowNode).attr("id", myid); 

Die .node() gibt das Element der neu hinzugefügten Zeile zurück.

Verwandte Themen