2016-07-28 11 views
0

ich ein Objekt zu erstellen Ich versuche, die ich als proZugriff auf Objektdaten in Datentabellen durch get-Funktion

Datatables - Data

ändern kann ich den folgenden Code verwenden, um meine Aufgabe

function projectData(projid,projdesc,descdet){ 
    this._projid = 'HTML1' 
    this._projdesc = 'HTML2' 
    for(var i=0;i<=7;i++){ 
    this['_day'+i] = 'HTML3'; 
    } 
    this.projid = function(){ 
    return this._projid 
    } 
    this.projdesc = function(){ 
    return this._projdesc 
    } 
    this.day0 = function(){ // More of these for day (0-7) 
    return this._day0 
    } 
} 

Dann zu erstellen Ich verwende die folgende Tabelleninitialisierung. (PrjData ist ein Array von New project Objekte)

var table = $('#table-ProjectHours').DataTable({ 
    data: prjData, 
    "columns": [ 
     { data: 'projid',"visible": true}, 
     { data: 'projdesc',"width": "45%" }, 
     { data: 'day0',"orderDataType": "dom-text-numeric" }, 
     { data: 'day1',"orderDataType": "dom-text-numeric" }, 
     { data: 'day2',"orderDataType": "dom-text-numeric" }, 
     { data: 'day3',"orderDataType": "dom-text-numeric" }, 
     { data: 'day4',"orderDataType": "dom-text-numeric" }, 
     { data: 'day5',"orderDataType": "dom-text-numeric" }, 
     { data: 'day6',"orderDataType": "dom-text-numeric" }, 
     { data: 'day7',"orderDataType": "dom-text-numeric" } 
    ] 
    }); 

ich meinen Tisch Zugriff durch

var dto = $('#table-ProjectHours').DataTable().data(); 

ich meine Objekte erhalten wie hier zu sehen:

Datatable object

Was ich nicht Verstehen ist warum, wenn ich versuche, dto [0] .day0 zu tun, bekomme ich nicht _day0 --- ich bekomme nur die Funktionszeichenfolge.

ich die Daten durch _day0 zugreifen können, aber es scheint falsch ...

+0

Um Daten in Jquery-Datentabellen setzen Sie '.row (Index) .data verwenden müssen (obj)' oder '.cell (Selektor) .data (obj)' Sie können auch verwenden 'Reihe (index) .day0() 'und wenn Sie einen Satzteil Ihrer Methode schreiben, können Sie die Daten wie' row (index) .day0 (thing_to_set) 'setzen. Sie müssen row (index) .invalidate aufrufen, nachdem Sie die Daten geändert haben richtig angezeigt. In dieser besonderen Situation muss .day0 als .day0() aufgerufen werden, da es sich um eine Methode handelt. –

Antwort

0

Try Zeilen(). Daten() https://datatables.net/reference/api/rows().data()

z.B.

var table = $('#example').DataTable(); 

var data = table 
    .rows() 
    .data(); 

alert('The table has '+data.length+' records'); 
+0

'alert (dt [0] .projid)' -> Gibt "' function() zurück {return this._projid} '" 'alert (dt [0] ._ projid)' -> Gibt "' 5' ", unabhängig von' .rows(). data() 'oder' .data() ' –

+0

Was versuchen Sie zu tun? Um auf die Zeile zuzugreifen, schauen Sie sich die Zeilen api an: https://datatables.net/reference/api/rows() –

+0

'rows.data()' ruft nur die Daten ab. Ich habe bestimmt Datentabellen erlaubt nur Einstellung über '.row (index) .data (obj)' und '.cell (selector) .data (value)' Ich versuche auf meinen 'obj.projid' Wert zuzugreifen, so dass ich manipulieren kann und dann zurück zu '.row (index) .data (obj)' Aber etwas stimmt nicht mit der obj.projid-Methode, die ich in projectData definiert habe –