Você já precisou habilitar a pesquisa de informações em uma grid dentro de uma tela de manipulação de registros em MVC? Veja como no artigo de hoje.
Basicamente pessoal, para habilitar, você vai precisar setar na sua View as propriedades de GRIDSEEK e GRIDFILTER como .T., sendo que a primeira habilita aquele campinho de pesquisar e a segunda aquele botão de filtrar. Abaixo um exemplo da sintaxe:
oView:SetViewProperty("GRID_DA_SUA_VIEW", "GRIDSEEK", {.T.}) oView:SetViewProperty("GRID_DA_SUA_VIEW", "GRIDFILTER", {.T.})
Dessa forma, ao abrir uma tela de manipulação de registros, na grid irá existir as opções para pesquisar, conforme gif de exemplo abaixo:
E abaixo o código fonte completo do exemplo acima:
//Bibliotecas #Include "Totvs.ch" #Include "FWMVCDef.ch" //Variveis Estaticas Static cTitulo := "Cadastro de CDs" Static cTabPai := "ZD2" Static cTabFilho := "ZD3" /*/{Protheus.doc} User Function zMVC02 CDs @author Daniel Atilio @since 21/01/2022 @version 1.0 @type function @obs Codigo gerado automaticamente pelo Autumn Code Maker @see http://autumncodemaker.com /*/ User Function zMVC02() Local aArea := GetArea() Local oBrowse Private aRotina := {} //Definicao do menu aRotina := MenuDef() //Instanciando o browse oBrowse := FWMBrowse():New() oBrowse:SetAlias(cTabPai) oBrowse:SetDescription(cTitulo) oBrowse:DisableDetails() //Ativa a Browse oBrowse:Activate() RestArea(aArea) Return Nil /*/{Protheus.doc} MenuDef Menu de opcoes 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 MenuDef() Local aRotina := {} //Adicionando opcoes do menu ADD OPTION aRotina TITLE "Visualizar" ACTION "VIEWDEF.zMVC02" OPERATION 1 ACCESS 0 ADD OPTION aRotina TITLE "Incluir" ACTION "VIEWDEF.zMVC02" OPERATION 3 ACCESS 0 ADD OPTION aRotina TITLE "Alterar" ACTION "VIEWDEF.zMVC02" OPERATION 4 ACCESS 0 ADD OPTION aRotina TITLE "Excluir" ACTION "VIEWDEF.zMVC02" OPERATION 5 ACCESS 0 Return aRotina User Function z02Menu() Return MenuDef() /*/{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'}) Return oModel /*/{Protheus.doc} ViewDef Visualizacao 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 ViewDef() Local oModel := FWLoadModel("zMVC02") Local oStruPai := FWFormStruct(2, cTabPai) Local oStruFilho := FWFormStruct(2, cTabFilho) Local oView //Cria a visualizacao do cadastro oView := FWFormView():New() oView:SetModel(oModel) oView:AddField("VIEW_ZD2", oStruPai, "ZD2MASTER") oView:AddGrid("VIEW_ZD3", oStruFilho, "ZD3DETAIL") //Partes da tela oView:CreateHorizontalBox("CABEC", 30) oView:CreateHorizontalBox("GRID", 70) oView:SetOwnerView("VIEW_ZD2", "CABEC") oView:SetOwnerView("VIEW_ZD3", "GRID") //Titulos oView:EnableTitleView("VIEW_ZD2", "Cabecalho - ZD2 (CDs)") oView:EnableTitleView("VIEW_ZD3", "Grid - ZD3 (Musicas dos CDs)") //Removendo campos oStruFilho:RemoveField("ZD3_CD") //Adicionando campo incremental na grid oView:AddIncrementField("VIEW_ZD3", "ZD3_ITEM") //Ativando o campo de pesquisar e ativando o botão de Filtrar oView:SetViewProperty("VIEW_ZD3", "GRIDSEEK", {.T.}) oView:SetViewProperty("VIEW_ZD3", "GRIDFILTER", {.T.}) Return oView
Bom pessoal, por hoje é só.
Abraços e até a próxima.