Versão atual:

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?

Versões (2):

Ver a versão formatada

Widget selectRow undefined

Comentário

new question