Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

240
Visualizações
Las filas seleccionadas de Datatables.js no permanecen seleccionadas después de ajax.reload ()

de acuerdo con lo que dice en la lata , Datatables debería poder "retener la selección de filas durante una recarga de datos". Pero no puedo hacer que funcione cuando uso datos de ajax.

Así es como hago mi tabla:

 oTable = $('#fileList').DataTable({ select: true, "ajax": { "url": "./data.php", "type": "GET" }, rowId: 'Index', "createdRow": function (row, data, dataIndex) { $(row).addClass(data[2]); //set formatting from data[2] } });

Siguiendo las instrucciones de la referencia anterior, inicialmente usé esto para actualizar la tabla cada cinco segundos:

 setInterval(function () { oTable.ajax.reload(); }

Pero cualquier fila seleccionada se deseleccionaría cada cinco segundos. Así que intenté ser más explícito: cargar las filas seleccionadas en una matriz y volver a seleccionarlas dentro de la función setInterval:

 setInterval(function () { var selectedRows = []; //put all the selected rows into an array: sel = oTable.rows('.selected').every(function (rowIdx) { selectedRows.push(rowIdx); }); oTable.ajax.reload(); console.log(selectedRows); //select all the rows from the array for (var i = 0; i < selectedRows.length; i++) { console.log("selecting ",selectedRows[i]); oTable.rows(selectedRows[i]).select(); } }, 5000) });

en la Consola si tengo una fila seleccionada (en este ejemplo la tercera fila) veo:

 Array [ 2 ] selecting 2

Lo cual es como se esperaba, pero las filas no se vuelven a seleccionar. Si oTable.rows(2).select(); en la consola, selecciona la tercera fila como debería, pero no funciona desde el bloque setInterval .

Supongo que puede tener algo que ver con la propiedad rowID. He definido la tabla en HTML así:

 <table id="fileList" class="display"> <thead> <tr> <th>Index</th> <th>Status</th> <th>Owner</th> </tr> </thead> </table>

y los datos provienen de un script php que devuelve una matriz como

 {"data":[["1", "foo", "bar"], ["2", "fuz", "baz"]}

donde el primer elemento es el índice.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Parece que el problema puede estar ocurriendo debido a la falta de claves en los datos devueltos. ¿Ha intentado devolver los datos como una matriz asociativa similar a:

 "data": [ { "index": 1, "status": "Foo", "owner": "Bar" } ]

A continuación, puede intentar reemplazar:

 rowId: 'Index',

con:

 rowId: 'index',
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda