Tenho a seguinte função para pegar as informações de uma linha no meu Datatable.
$(".linha-tabela").on("click", function(){
alert("Chegou na Funcao - linha-tabela");
console.log(myTable.selectedRows())
var linhaSelecionada = myTable.selectedRows()[0];
console.log(myTable.selectedRows()[0]);
var linha = myTable.getRow(linhaSelecionada);
alert("Pedido: " + linha.PEDIDO);
$("#solicitante").val(linha.SOLICITANTE);
});`
Consigo chegar na função.
Porém nos campos linhaSelecionada está sendo retornado [] (lista vazia).
E consequentemente no campo linha vem com valor undefined.
Gostaria que me ajudassem a entender onde estou errando nessa chamada.
Pois em todas as documentações que vi, a chamada é feita dessa maneira.
Bom dia Alessandro,
essa classe "linha-tabela" está na tr da table?
Tente uma das opções abaixo:
// Busca pela classe
$('#id-da-tabela').on('click', '.linha-tabela', function() {
var linhaSelecionada = myTable.selectedRows()[0];
var linha = myTable.getRow(linhaSelecionada);
console.log(linha);
});
// Ou use a busca pelo tr direto
$('#id-da-tabela').on('click', 'tr', function() {
var linhaSelecionada = myTable.selectedRows()[0];
var linha = myTable.getRow(linhaSelecionada);
console.log(linha);
});
Sim, a classe linha-tabela está na tr.
Irei tentar suas opções e já já respondo aqui.
Diogo, teste das duas maneiras e retornou o mesmo resultado.
linhaSelecionada veio nulo, linha veio como undefined.
Eu preciso declarar esse myTable em algum lugar do meu código JavaScript ?
O myTable eu peguei do seu código ali acima, mas é a variável contendo a instancia da datatable que vc criou, tipo: var myTable = FLUIGC.datatable(‘#id-da-tabela’, { objeto com as propriedades da tabela }); TOTVS Fluig Developer
Meu script está seguindo o padrão da documentação, porém, quando chamo o selectedRows()[0], ele está vindo nulo e consequentemente quando chamo o getRow ele não tras nada e fica undefined.
Estou revisando o código mas não consigo achar onde pode estar o erro ou o que está faltando para ele pegar as informações da linha da tabela.
O que retorna se você colocar console.log(myTable)?
Retorno do console.log(myTable):
{addPage: ƒ, reload: ƒ, addRow: ƒ, removeRow: ƒ, removeRows: ƒ, …}
addPage
:
ƒ (a,b,c)
addRow
:
ƒ (a,b,c)
destroy
:
ƒ ()
dragInfo
:
ƒ ()
getClassSelected
:
ƒ ()
getData
:
ƒ ()
getRow
:
ƒ (a,b)
hideColumn
:
ƒ (a)
hideLoading
:
ƒ ()
nextPage
:
ƒ (a,b)
on
:
ƒ (a,b)
reload
:
ƒ (a,b)
removeRow
:
ƒ (a)
removeRows
:
ƒ (a)
selectedRows
:
ƒ ()
showColumn
:
ƒ (a)
showColumns
:
ƒ ()
showLoading
:
ƒ (a)
updateRow
:
ƒ (a,b,c)
proto
:
Object
$(‘#id-da-tabela’).on(‘click’, ‘.linha-tabela’, function() {
console.log($(this).index());
console.log(myTable.getRow($(this).index()));
});
Diogo, muito obrigado pela resposta, o código que você enviou funcionou,já consigo tratar as informações e usá-las.
Tire só uma dúvida, porque teve que ficar assim $(this).index() e não como está na maioria dos exemplos ?
Para constar o código que funcionou:
`$('#id-da-tabela').on('click', 'tr', function() {
console.log($(this).index());
console.log(myTable.getRow($(this).index()));
var linhaSelecionada = $(this).index();
var linha = myTable.getRow(linhaSelecionada);
});`
Normalmente eu uso pegando o index, mas também deveria funcionar da forma como está nos exemplos. Só olhando o seu código pra ver se tem algo que impede o funcionamento.