code: 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 );
  	}
docs: 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