Si hallas algún problema en tu código o proyecto, recuerda probar siempre en un ambiente de testing antes aplicar el código al trabajo final.
Solución:
El selector de CSS no funcionará, porque "visible": false
en tus columnDefs
no significa que la columna obtenga el equivalente display: none;
propiedad de estilo en el marcado.
En su lugar, deberá usar la API de DataTables para obtener los datos en la columna oculta.
La función fnGetData
hará el truco. Devuelve los datos de texto en la celda que se pasa como argumento a la función.
Heres el ejemplo de la documentación
oTable.$('td').click( function ()
var sData = oTable.fnGetData( this );
alert( 'The cell clicked on had the value of '+sData );
);
En su caso, la columna está oculta, por lo que deberá combinarla con una segunda llamada a la API. Digamos que hace clic en la fila con la primera columna oculta, puede combinar la fnGetData
con el fnGetPosition
función.
var position = dtTable.fnGetPosition(this);
var hiddenColumnValue = dtTable.fnGetData(position)[0];
Consulte la documentación, tiene algunos ejemplos excelentes.
fnGetData()
fnObtenerPosición()
Este es el código de trabajo
$('#lookupTable tbody').on('click', 'tr', function ()
selectedIndex = dtTable.row(this).data()[0];
);
Vaya a través de la API de tablas de datos y tiene varias formas de recuperar datos de columnas ocultas de la manera correcta. Por ejemplo, puedes usar cells
. Como ves en el enlace puedes usar todo tipo de selectores con cells
como un selector de jQuery.
Aquí un ejemplo muy simple que cierra la sesión de los valores de la primera columna que se ha ocultado:
var dtTable = $('#example').DataTable()
dtTable.columns([0,1,2]).visible(false);
for (var i=0;i<10;i++)
console.log(dtTable.cells( row: i, column: 0 ).data()[0]);
http://jsfiddle.net/oumtdd6k/
No se puede enfatizar lo suficiente: Siempre revise la API, no intente usar jQuery tradicional en una tabla de datos inicializada!!
En este caso, la razón es obvia: jQuery solo puede acceder a elementos que realmente están en el DOM. Cuando oculta columnas en tablas de datos, no se ocultan como en display: none
¡simplemente no se renderizan!
La respuesta correcta es bastante antigua. Entonces, si la respuesta correcta no te funciona. Por favor, pruebe este método:
selectedIndex = dtTable.row(this).data();
Este código devolverá el objeto json sin procesar que se obtuvo para esta fila. algo como :
"modify":"false",
"lastModify":"Tuesday",
"name":"abc",
"DT_RowId":"row_1",
"fileID":"0bde976"
Para obtener el "fileID" solo necesita:
alert("ID = "+selectedIndex.fileID);
Si sostienes alguna incertidumbre y disposición de refinar nuestro post te sugerimos realizar una referencia y con placer lo leeremos.