admin/public/js/plugins/dataTables/jquery.dataTables.js
function _fnInvalidateRow( settings, rowIdx, src, column )
	{
		var row = settings.aoData[ rowIdx ];
		var i, ien;
	
		// Are we reading last data from DOM or the data object?
		if ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) {
			// Read the data from the DOM
			row._aData = _fnGetRowElements( settings, row.nTr ).data;
		}
		else {
			// Reading from data object, update the DOM
			var cells = row.anCells;
	
			for ( i=0, ien=cells.length ; i<ien ; i++ ) {
				cells[i].innerHTML = _fnGetCellData( settings, rowIdx, i, 'display' );
			}
		}
	
		row._aSortData = null;
		row._aFilterData = null;
	
		// Invalidate the type for a specific column (if given) or all columns since
		// the data might have changed
		var cols = settings.aoColumns;
		if ( column !== undefined ) {
			cols[ column ].sType = null;
		}
		else {
			for ( i=0, ien=cols.length ; i<ien ; i++ ) {
				cols[i].sType = null;
			}
		}
	
		// Update DataTables special `DT_*` attributes for the row
		_fnRowAttributes( row );
	}
function _fnInvalidateRow( settings, rowIdx, src, column )
	{
		var row = settings.aoData[ rowIdx ];
		var i, ien;
	
		// Are we reading last data from DOM or the data object?
		if ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) {
			// Read the data from the DOM
			row._aData = _fnGetRowElements( settings, row.nTr ).data;
		}
		else {
			// Reading from data object, update the DOM
			var cells = row.anCells;
	
			for ( i=0, ien=cells.length ; i<ien ; i++ ) {
				cells[i].innerHTML = _fnGetCellData( settings, rowIdx, i, 'display' );
			}
		}
	
		row._aSortData = null;
		row._aFilterData = null;
	
		// Invalidate the type for a specific column (if given) or all columns since
		// the data might have changed
		var cols = settings.aoColumns;
		if ( column !== undefined ) {
			cols[ column ].sType = null;
		}
		else {
			for ( i=0, ien=cols.length ; i<ien ; i++ ) {
				cols[i].sType = null;
			}
		}
	
		// Update DataTables special `DT_*` attributes for the row
		_fnRowAttributes( row );
	}
function _fnInvalidateRow ( settings , rowIdx , src , column ) { var row = settings . aoData [ rowIdx ] ; var i , ien ; // Are we reading last data from DOM or the data object?
 if ( src === 'dom' || ( ( ! src || src === 'auto' ) && row . src === 'dom' ) ) { // Read the data from the DOM
 row . _aData = _fnGetRowElements ( settings , row . nTr ) . data ; } else { // Reading from data object, update the DOM
 var cells = row . anCells ; for ( i = 0 , ien = cells . length ; i < ien ; i ++ ) { cells [ i ] . innerHTML = _fnGetCellData ( settings , rowIdx , i , 'display' ) ; } } row . _aSortData = null ; row . _aFilterData = null ; // Invalidate the type for a specific column (if given) or all columns since
 // the data might have changed
 var cols = settings . aoColumns ; if ( column !== undefined ) { cols [ column ] . sType = null ; } else { for ( i = 0 , ien = cols . length ; i < ien ; i ++ ) { cols [ i ] . sType = null ; } } // Update DataTables special `DT_*` attributes for the row
 _fnRowAttributes ( row ) ; }
Mark cached data as invalid such that a re-read of the data will occur when
the cached data is next requested. Also update from the data source object.

@param {object} settings DataTables settings object
@param  {int}    rowIdx   Row index to invalidate
@memberof DataTable#oApi

@todo For the modularisation of v1.11 this will need to become a callback, so
the sort and filter methods can subscribe to it. That will required
initialisation options for sorting, which is why it is not already baked in
Mark cached data as invalid such that a re - read of the data will occur when the cached data is next requested . Also update from the data source object .