Widget - erro getRow undefined ao selecionar uma linha da tabela

Criei uma Widget para consultar Orçamentos para Aprovação. Consigo consultar a listagem de orçamentos, porém, quando se clica no botão de Detalhar, está dando erro no Console de Uncaught TypeError: Cannot read property 'getRow' of undefined.

Consigo trazer a linha, mas ele não consegue reconhecer o getRow para eu pegar os dados da linha.

Eu consegui fazer isso em Formulário, aliás esse mesmo código funciona nos Formulários, mas está dando erro no Widget.

listarorcamentos: function(htmlElement, event) {
        var constraints = new Array();
        // Verifica os campos preenchidos no Formulario para montar as Constraints do Dataset
        // Aprovadores, campo obrigatório, busca o Nome do campo e envia para a Consulta SQL
        if($("#listaAprovadores_" + this.instanceId).val() == "nome") {
            alert("É obrigatório selecionar um Aprovador");
        }
        else {
            constraints.push(DatasetFactory.createConstraint("listaAprovadores", $("#listaAprovadores_" + this.instanceId).val(), $("#listaAprovadores_" + this.instanceId).val(), ConstraintType.MUST));
        }
        // Hierarquia, se for selecionado Todos, não cria Constraint, senão, pega o código da Hierarquia selecionada.
        if($("#listaHierarquia_" + this.instanceId).val() != "0") {
            constraints.push(DatasetFactory.createConstraint("listaHierarquia", $("#listaHierarquia_" + this.instanceId).val(), $("#listaHierarquia_" + this.instanceId).val(), ConstraintType.MUST));
        }
        // Data Inicial e Data Final, se preenchidos criam Constraint.
        if($("#dataInicial_" + this.instanceId).val() != "") {
            var temp_ini = $("#dataInicial_" + this.instanceId).val();
            var data_ini = "1" + temp_ini.substring(8,10) + temp_ini.substring(3,5) + temp_ini.substring(0,2);
            constraints.push(DatasetFactory.createConstraint("dataInicial", data_ini, data_ini, ConstraintType.MUST));
        }
        if($("#dataFinal_" + this.instanceId).val() != "") {
            var temp_fim = $("#dataFinal_" + this.instanceId).val();
            var data_fim = "1" + temp_fim.substring(8,10) + temp_fim.substring(3,5) + temp_fim.substring(0,2);
            constraints.push(DatasetFactory.createConstraint("dataFinal", data_fim, data_fim, ConstraintType.MUST));
        }
        // Solicitante, se preenchido criar Constraint
        if($("#solicitante_" + this.instanceId).val() != "") {
            constraints.push(DatasetFactory.createConstraint("solicitante", $("#solicitante_" + this.instanceId).val(), $("#solicitante_" + this.instanceId).val(), ConstraintType.MUST));
        }
        // Fornecedor, se preenchido criar Constraint
        if($("#fornecedor_" + this.instanceId).val() != "") {
            constraints.push(DatasetFactory.createConstraint("fornecedor", $("#fornecedor_" + this.instanceId).val(), $("#fornecedor_" + this.instanceId).val(), ConstraintType.MUST));
        }

        var ds_lista = DatasetFactory.getDataset("ds_lista_orcamento", null, constraints, null);
        alert("Total Tables: " + ds_lista.values.length);
        this.mydata = [];

        if (ds_lista != null && ds_lista.values != null && ds_lista.values.length > 0) {
            var records = ds_lista.values;

            for ( var index in records ) {
                var record = records[index];
                this.mydata.push({
                    PEDIDO: record.PEDIDO,
                    HIERARQUIA: record.DESCHIER,
                    SOLICITANTE: record.SOLICITANTE,
                    DATA: record.FMSG_DATA,
                    COD_FORN: record.FORNEC,
                    RAZAO: record.RAZFOR,
                    VALOR: record.VALOR,
                    ORIGEM: record.ORIGEM,
                    OBSERVACAO: record.FQUE_MENSAGEM
                });
            }
        }
        else {
            FLUIGC.toast({
                title: 'Atençao: ',
                message: 'Não há orçamentos para serem analisados.',
                type: 'warning'
            });
        }

        this.myTable = FLUIGC.datatable('#table1', {
            dataRequest: this.mydata,
            //renderContent: ['FMSG_CODIGO', 'FMSG_DATA', 'FMSG_LIDA', 'SOLICITANTE', 'FMSG_TRANSACAO', 'FQUE_MENSAGEM', 'FQUE_WORKITEM', 'FMSG_DESTINO', 'PEDIDO', 'FORNEC', 'RAZFOR', 'VALOR', 'ORIGEM', 'DESCHIER'],
            renderContent: '.template-datatable',
            header: [
                    {'title': 'Mover', 'size': 'col-md-1'},
                    {'title': 'Detalhar', 'size': 'col-md-1'},
                     {'title': 'Pedido', 'size': 'col-md-1'},
                     {'title': 'Hierarquia', 'size': 'col-md-2'},
                     {'title': 'Solicitante', 'size': 'col-md-2'},
                     {'title': 'Data', 'size': 'col-md-2'},
                     {'title': 'Fornecedor', 'size': 'col-md-1'},
                     {'title': 'Razao Social', 'size': 'col-md-3'},
                     {'title': 'Valor', 'size': 'col-md-1'},
                     {'title': 'Tipo', 'size': 'col-md-1'},
                     {'title': 'Observaçao', 'size': 'col-md-3'}
             ],
             scroll: {
                 target: ".target",
                enabled: true
            },
        }, function(err, data) {
            if (err) {
                FLUIGC.toast({
                    message: err,
                    type: 'danger'
                });
            }
        });

        $('#table1').on('click', 'button', function(ev) { 
            alert("Chegou na Funcao - click button");
            var linhaSelecionada = $(this).closest('tr').index();
            console.log(linhaSelecionada);

            var linha = $(this).myTable.getRow(linhaSelecionada);
            console.log(linha);

            alert("Pedido 01: " + linha.PEDIDO);
            detalharPedido(linha);
        });

        $('#table1').on('click', 'input', function() {
            alert("Evento Change - Checkbox clicado");
            console.log($(this).closest('tr').index()); 
            console.log(myTable.getRow($(this).closest('tr').index())); 

            var linhaSelecionada = $(this).closest('tr').index();
            var linha = myTable.getRow(linhaSelecionada);

            if(document.getElementById("status_todos").checked) {
                alert("Checkbox Habilitado! - ");
                alert("Linha: " + linha.PEDIDO);
            }
        });
    }

Meus dois problemas atuais estão nesse trecho do código:

$('#table1').on('click', 'button', function(ev) { 
            alert("Chegou na Funcao - click button");
            var linhaSelecionada = $(this).closest('tr').index();
            console.log(linhaSelecionada);

            var linha = $(this).myTable.getRow(linhaSelecionada);
            console.log(linha);

            alert("Pedido 01: " + linha.PEDIDO);
            detalharPedido(linha);
        });

Onde está dando erro no getRow, existe outra função para os widget além do getRow ?

E depois disso como faço no Widget para ele chamar o DetalharPedido? Preciso configurar como se fosse um binding local?

compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do fluig Forum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags widget getrow mytable ou faça a sua própria pergunta.