Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: gAb1 en 6 Enero 2016, 02:52 am



Título: [Resuelto] problema con datatables para acceder a un valor del objecto json
Publicado por: gAb1 en 6 Enero 2016, 02:52 am
Llevo un buen rato comiendome la cabeza y volviendome loco porque estoy intentando coger un valor del objeto para usarlo en un boton de la tabla. Necesito coger el id de la fila seleccionada (la primera columna y posición en el objeto).

Así inicializo datatables:

Código
  1. var table = $('#example').DataTable( {
  2.    serverSide: true,
  3.    dom: 'Bfrtip',
  4.    ajax: '/get?op=2',
  5.    columns: [
  6.        { data: 'id' },
  7.        // more columns
  8.    ],
  9.    buttons: [
  10.        {
  11.            text: 'New',
  12.            action: function ( e, dt, node, config ) {
  13.                window.location.href = '/url?op=new'
  14.            }
  15.        },
  16.        {
  17.            text: 'Modify',
  18.            action: function ( e, dt, node, config ) {
  19.                window.location.href = '/url?op=modify&id=' + dt.row( { selected: true } ).id() )
  20.            },
  21.            enabled: false
  22.        },
  23.        {
  24.            text: 'Delete',
  25.            action: function ( e, dt, node, config ) {
  26.            },
  27.            enabled: false
  28.        }
  29.    ],
  30.    select: true
  31. } );

Según la documentación asi es como se cogen los datos... He probado de varias maneras, usando un alert():

Código
  1. alert( dt.row( { selected: true } ).id() );  // undefined
  2. alert( JSON.stringify(dt.row( { selected: true } ).id()) );  // "undefined"
  3. alert( JSON.stringify(dt.row( { selected: true } ).data()[0]) );  // undefined

Lo raro es que si que puedo acceder al objeto y ver todo lo que tiene...

Código
  1. alert( JSON.stringify(dt.row( { selected: true } ).data()) );
  2. // {"id":1,"key":"value","etc":"etc"}

¿Alguna idea?  :huh:

Edito: Solucionado:


Código
  1. var rw = dt.rows({ selected: true }).data()[0];
  2. alert(rw.id);  // 1