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.
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.)
Fala xará, bom dia, tudo joia?
Opa, valeu pelo toque, artigo já corrigido.
Abraços.