Dim clList As New BrowList With { .ID = "listaclem", .Title = "Procurar por clientes ou contactos", .Type = BrowListTypeEnum.GridWithVariables 'Se tem variáveis } With clList.Grid .FieldId = "stamp" .MultiSelectRows = True .ShowColumnToSelect = True .AddGridColumn("nome", "Nome") .AddGridColumn("ncont", "Contribuinte") End With 'Obter a definição das variáveis clList.ListContext.GetVariablesFunction = Function(args) Dim variables As New BrowListVariables 'Valores para escolher na combo Dim values As New Dictionary(Of String, String) From { {"cl", "Clientes"}, {"em", "Contactos"} } 'Define uma variável do tipo combo e um valor por defeito. São também adicionadas as classes de CSS ´marginbottom40PX´ (que coloca 40px de margem inferior ao campo), ´bg-primary´ (coloca o fundo a azul) e ´padding5´ (coloca um padding de 5px): variables.AddComboVariable(BrowlistDataTypeEnum.Text, "tipo", "Tabela", values, "cl", additionalClasses:="marginbottom40PX bg-primary padding5") 'Define uma variável do tipo texto. É adicionada a propriedade fieldWidth com o valor AllLine, que indica que este campo ocupa a linha inteira. É também adicionada uma classe de CSS que coloca 40px de margem inferior ao campo: variables.AddTextVariable("nome", "Nome", "", fieldWidth:=BrowlistFieldWidthEnum.AllLine, additionalClasses:="marginbottom40PX") 'Define uma variável do tipo inteiro. É também adicionada uma classe de CSS que coloca 40px de margem inferior ao campo: variables.AddIntegerVariable("no", "Número", 0, additionalClasses:="marginbottom40PX") 'Define uma variável do tipo data. É adicionada a propriedade fieldWidth com o valor AllLine, que indica que este campo ocupa a linha inteira. É também adicionada uma classe de CSS que coloca 40px de margem inferior ao campo: variables.AddDateVariable("data", "Data", fieldWidth:=BrowlistFieldWidthEnum.AllLine, additionalClasses:="marginbottom40PX") 'Define uma variável do tipo boleana. É adicionada a propriedade fieldWidth com o valor AllLine, que indica que este campo ocupa a linha inteira. É também adicionada uma classe de CSS que coloca 40px de margem inferior ao campo. Por fim, é adicionado o ´addLargeMargin´ (exclusivo de variáveis Boolean) que dá uma margem superior de 35px e 5.64px de margem inferior: variables.AddBooleanVariable("boleano", "Boleano", False, fieldWidth:=BrowlistFieldWidthEnum.AllLine, additionalClasses:="marginbottom40PX", addLargeMargin:=False) 'Define uma variável do tipo texto. Utiliza o método SetIsVisible para definir se o campo é visível. Por defeito, é sempre visível: variables.AddTextVariable("InfoTabela", "Sou informação com um valor que irá ser utilizado, mas não quero que o utilizador altere ou veja esse valor", "valor").SetIsVisible(False) 'Define o objecto para envio das variáveis e retorna-o Return args.GetVariablesObj(variables) End Function clList.ListContext.GetModelFunctionAsync = Async Function(args) Dim vars = args.Variables Dim filters As New PhcTableFilter 'Obtém o valor da variável Dim stringValue As String = vars.GetValueString("nome") If stringValue.IsNotNullOrEmpty Then filters.AddFilter("nome like @nome") filters.AddSqlStringParameter("nome", $"%{stringValue}%") End If Dim query As PhcCommandBuilder Dim title As String stringValue = vars.GetValueString("tipo") If stringValue = "cl" Then title = "Clientes" query = PhcCommandBuilder.CreateSelect("clstamp as stamp,nome,ncont").From("cl") Else title = "Contactos" query = PhcCommandBuilder.CreateSelect("emstamp as stamp,nome,ncont").From("em") End If 'Obtém o objecto para envio dos valores e retorna-o With args.GetDataObj(Await query.Where(filters).GetSqlResultAsync) .SetValue("title", title) Return .ThisObject End With End Function clList.ListContext.SetSelectRowsFunction = Function(args) Dim result As New PhcDynamicObject Return New JsonMessage(Of PhcDynamicObject)(result) End Function clList.AddToForm(mpage.tonormalform) mpage.RegisterClientScriptForAjax("testeBrowlist", clList.GetShowBroListJavascriptFunction() |