Desativando a inserção e exclusão de linhas de uma grid MVC

No artigo de hoje, vamos demonstrar como desativar a inclusão, alteração e/ou a exclusão de linhas em uma grid MVC.

Se você já precisou travar em uma grid para que não haja novas linhas ou alteração de linhas existentes ou exclusão de linhas, saiba que é bem simples fazer, através de 3 métodos no model da sua grid, sendo:

  • SetNoDeleteLine: Método que desativa a exclusão da linha (.T.) ou mantém como sendo possível excluir (.F.)
  • SetNoInsertLine: Método que desativa a inclusão da linha (.T.) ou mantém como sendo possível incluir (.F.)
  • SetNoUpdateLine: Método que desativa a alteração da linha (.T.) ou mantém como sendo possível alterar (.F.)

Para utilizar esses métodos, você intercepta o model da grid, e aciona eles. Abaixo um exemplo fazendo, desativando a exclusão de linhas na ModelDef:

/*/{Protheus.doc} ModelDef
Modelo de dados na funcao zMVC02
@author Daniel Atilio
@since 21/01/2022
@version 1.0
@type function
@obs Codigo gerado automaticamente pelo Autumn Code Maker
@see http://autumncodemaker.com
/*/
  
Static Function ModelDef()
    Local oStruPai := FWFormStruct(1, cTabPai)
    Local oStruFilho := FWFormStruct(1, cTabFilho)
    Local aRelation := {}
    Local oModel
    Local bPre := Nil
    Local bPos := Nil
    Local bCommit := Nil
    Local bCancel := Nil
  
  
    //Cria o modelo de dados para cadastro
    oModel := MPFormModel():New("zMVC02M", bPre, bPos, bCommit, bCancel)
    oModel:AddFields("ZD2MASTER", /*cOwner*/, oStruPai)
    oModel:AddGrid("ZD3DETAIL","ZD2MASTER",oStruFilho,/*bLinePre*/, /*bLinePost*/,/*bPre - Grid Inteiro*/,/*bPos - Grid Inteiro*/,/*bLoad - Carga do modelo manualmente*/)
    oModel:SetDescription("Modelo de dados - " + cTitulo)
    oModel:GetModel("ZD2MASTER"):SetDescription( "Dados de - " + cTitulo)
    oModel:GetModel("ZD3DETAIL"):SetDescription( "Grid de - " + cTitulo)
    oModel:SetPrimaryKey({})
  
    //Fazendo o relacionamento
    aAdd(aRelation, {"ZD3_FILIAL", "FWxFilial('ZD3')"} )
    aAdd(aRelation, {"ZD3_CD", "ZD2_CD"})
    oModel:SetRelation("ZD3DETAIL", aRelation, ZD3->(IndexKey(1)))
      
    //Definindo campos unicos da linha
    oModel:GetModel("ZD3DETAIL"):SetUniqueLine({'ZD3_MUSICA'})
  
    //Desativando a exclusão de linhas
    oModel:GetModel("ZD3DETAIL"):SetNoDeleteLine(.T.)
  
Return oModel

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

2 Responses

  1. Daniel Gonçalves Jr. disse:

    Ficou invertido a descrição dos métodos, veja:
    SetNoDeleteLine: Método que desativa a inclusão da linha (.T.) ou mantém como sendo possível incluir (.F.)
    SetNoInsertLine: Método que desativa a exclusão da linha (.T.) ou mantém como sendo possível excluir (.F.)

    Correto:
    SetNoInsertLine: Método que desativa a inclusão da linha (.T.) ou mantém como sendo possível incluir (.F.)
    SetNoDeleteLine: Método que desativa a exclusão da linha (.T.) ou mantém como sendo possível excluir (.F.)

Deixe uma resposta

Terminal de Informação