Extend fnAddTr so that a TR node can be passed which is updated, instead of adding a new TR to the DataTables table.

pull/8/head
Thomas Chmielowiec 12 years ago
parent d313bf86f2
commit a92e6bfd70

@ -1,40 +1,45 @@
/** /**
* Take a TR element and add it to a DataTables table. Useful for maintaining * Take a TR element and add it to a DataTables table. Useful for maintaining
* custom classes and other attributes. * custom classes and other attributes. If mRow parameter is set, update
* mRow instead of adding a new row.
* @name fnAddTr * @name fnAddTr
* @anchor fnAddTr * @anchor fnAddTr
* @author <a href="http://sprymedia.co.uk">Allan Jardine</a> * @author <a href="http://sprymedia.co.uk">Allan Jardine</a>
* *
* @example * @example
* *
*/ */
$.fn.dataTableExt.oApi.fnAddTr = function ( oSettings, nTr, bRedraw ) { $.fn.dataTableExt.oApi.fnAddTr = function ( oSettings, nTr, bRedraw, mRow ) {
if ( typeof bRedraw == 'undefined' ) if ( typeof bRedraw == 'undefined' )
{ {
bRedraw = true; bRedraw = true;
} }
var nTds = nTr.getElementsByTagName('td'); var nTds = nTr.getElementsByTagName('td');
if ( nTds.length != oSettings.aoColumns.length ) if ( nTds.length != oSettings.aoColumns.length )
{ {
alert( 'Warning: not adding new TR - columns and TD elements must match' ); alert( 'Warning: not adding new TR - columns and TD elements must match' );
return; return;
} }
var aData = []; var aData = [];
for ( var i=0 ; i<nTds.length ; i++ ) for ( var i=0 ; i<nTds.length ; i++ )
{ {
aData.push( nTds[i].innerHTML ); aData.push( nTds[i].innerHTML );
} }
/* Add the data and then replace DataTable's generated TR with ours */ if (typeof mRow == 'undefined') {
var iIndex = this.oApi._fnAddData( oSettings, aData ); /* Add the data and then replace DataTable's generated TR with ours */
nTr._DT_RowIndex = iIndex; var iIndex = this.oApi._fnAddData( oSettings, aData );
oSettings.aoData[ iIndex ].nTr = nTr; nTr._DT_RowIndex = iIndex;
oSettings.aoData[ iIndex ].nTr = nTr;
} else {
this.fnUpdate( aData, mRow );
}
oSettings.aiDisplay = oSettings.aiDisplayMaster.slice(); oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
if ( bRedraw ) if ( bRedraw )
{ {
this.oApi._fnReDraw( oSettings ); this.oApi._fnReDraw( oSettings );

Loading…
Cancel
Save