![]() |
||||||||
|
|
||||||||
|
| ||||||||


| com exemplos em VB |
| Componente para deixar forms em Vb semelhantes às telas do winnamp |
| Componente para colocar sua aplicação VB no Systray |
| Componente para transformar sua aplicação VB em serviço |
| Ferramentas úteis para quem usa Olap Server |
| |

|
||||||||
Pesquisa personalizada
Criando control Extenders para a Web Quem já estudou sobre o Atlas em artigos anteriores (http://www.bufaloinfo.com.br/artigos/coluna34.asp e http://www.bufaloinfo.com.br/artigos/coluna35.asp) já sabe que o Atlas possui diversos extenders para a web. O que muitos não devem ter observado é que os extenders existentes no Atlas Control Toolkit não são apenas para demonstração. No Atlas e no Atlas Control Toolkit existe todo um framework de classes base usando e abusando dos generics que permitem a construção de forma extremamente simples de Control Extenders para web. Os Control Extenders que podemos construir não tem uma relação tão direta com o Atlas. Podemos construir Control Extenders para qualquer tarefa. Podemos utilizar os recursos do Atlas na construção, para simplificar a comunicação entre o client e o servidor, ou não. Assim sendo podemos ver que muita coisa se esconde no Atlas e Atlas ToolKit, bem mais do que os recursos para comunicação servidor/client Para exemplificar esses recursos vamos criar um Extender para realizarmos operações de autorização em objetos da página. Isso quer dizer o seguinte : Vamos determinar quais usuários podem ou não acessar determinados objetos. Para isso precisamos de uma propriedade a mais nos objetos que determine quais grupos tem ou não permissão de acessa-lo. Vamos criar esta propriedade adicional e fazer o processamento em nosso extender.
Vamos seguir o caminho mais simples, disponibilizado pelo Atlas Control Toolkit. Quando você descompacta o toolkit encontra uma pasta chamada AtlasControlExtender com um arquivo AtlasControlExtender.VSI. Esse arquivo instala novos templates no Visual Studio, são justamente os templates para a criação de Control Extenders para a web.
Ao criarmos um novo projeto de um extender control, encontramos 3 arquivos .VB pré-montados para nos auxiliar na criação do extender. Isso porque o extender realmente necessita de 3 classes para funcionar, veja :
Vamos começar então pela classe que irá armazenar as propriedades, vamos chama-la de webAutorizeProperties. Essa classe herda de TargetControlPropertiesBase(Of Control). Observe, neste ponto, o interessante uso de Generics. A classe TargetControlPropertyBase (Microsoft.AtlasControlExtender.TargetControlPropertyBase ) implementa vários recursos que teríamos que codificar nós mesmos. Para conseguir implementar isso, precisamos "informa-la" de qual classe desejamos extender. Nesse caso estamos informando a extensão da classe Control (e todos os derivados) ao passarmos o "Of Control", segundo a síntaxe do generics. Nesta classe vamos criar nossa propriedade, vamos chama-la de "GrupoPermissao". A classe base, TargetControlPropertiesBase, já possui todos os meios para gerenciar os valores desta propriedade, portanto no Get/Set da propriedade chamaremos métodos da classe base. Veja como fica : 1 <DefaultProperty("GrupoPermissao")> _ 2 Public Class webAutorizeProperties 3 Inherits TargetControlPropertiesBase(Of Control) 4 5 Public Property GrupoPermissao() As String 6 Get 7 Return GetPropertyStringValue("GrupoPermissao") 8 End Get 9 Set(ByVal value As String) 10 SetPropertyStringValue("GrupoPermissao", value) 11 End Set 12 End Property 13 End Class Quanto ao designer, esse não precisa ser alterado. A herança da classe base, ExtenderControlBaseDesigner, já faz tudo. Mais uma vez apontamos, através do uso de generics o tipo de objeto que estamos extendendo. Veja como fica : 1 Class webAutorizeDesigner 2 Inherits ExtenderControlBaseDesigner(Of webAutorizeProperties, Control) 3 4 End Class A classe principal, o extender, herda de ExtenderControlBase . Neste caso temos 2 parâmetros para o Generics, a classe na qual criamos nossas propriedades e o tipo de objeto que estamos extendendo. O template desta classe traz o atributo clientScriptResource, ligado a um arquivo javascript. Trata-se de uma previsão de que nossa classe vá estar fazendo uso de javascript para suas tarefas, o que não é o caso deste nosso exemplo, portanto podemos retirar este atributo. É nesta classe que faremos a implementação de nosso código, através do evento load. Esta classe possui uma coleção com todas as definições de propriedades (instâncias de webAutorizeProperties) feitas para outros controles na página. Vamos vasculhar esta coleção e, para cada elemento, vamos determinar se o objeto tem ou não permissão para ser visualizado. Veja como fica : 1 <Designer(GetType(webAutorizeDesigner))> _ 2 Public Class webAutorizeExtender 3 Inherits ExtenderControlBase(Of webAutorizeProperties, Control) 4 5 6 Private Sub webAutorizeExtender_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 7 For Each wap As webAutorizeProperties In Me.TargetProperties 8 Dim wuc As Control 9 wuc = Page.FindControl(wap.TargetControlID) 10 If Not isnothing(wuc) Then 11 wuc.Visible = Context.User.IsInRole(wap.GrupoPermissao) 12 End If 13 Next 14 End Sub 15 End Class Feito isso podemos adicionar um novo projeto web na solução, para realizar testes. O Visual Studio é bem amigável, depois de um rebuild na class library nosso extender já irá aparecer na toolbox.
Para testarmos podemos inserir nosso extender na página web e mais 3 textbox. Você poderá ver, nas propriedades da textbox, a nova propriedade que criamos através do nosso extender. Vamos definir em duas textboxes a propriedade GrupoPermissão como sendo "Admins" e na última como "Users".
Antes de podermos rodar a aplicação precisamos inserir na página um scriptManager. Uma necessidade devido ao uso das classes base fornecidas pelo Atlas. Você pode adicionar o scriptManager na toolbox, adicionando a dll do próprio Atlas na toolbox. Por fim, basta rodar a aplicação. Você verá que 2 textbox somem, as duas que só podem ser vistas pelo grupo "Admins", enquanto que a 3a, acessível aos "Users", fica visível. Como ? Não entendeu ? Você não pode esquecer que a configuração default do web.config é para uso de autenticação windows. O grupo "Admins" está escrito errado (o correto seria Administrators) mas o grupo Users existe e seu usuário windows é parte dele, por isso a 3a textbox apareceu. Claro, você pode configurar o sistema de segurança para forms e fazer testes mais detalhados
Dennes Torres
|
||||||||
|
Veja abaixo os comentários já enviados :
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Quer
saber mais?
Faça um curso na Búfalo Informática, Treinamento e Consultoria e Prepare-se para o Mercado! Veja o que a Búfalo tem para você. |
||||||||
� Búfalo Informática,
Treinamento e Consultoria -
Rua Álvaro Alvim, 37 Sala 920 - Cinelândia - Rio de Janeiro / RJ
Tel.: (21)2262-1368 (21) 9240-5134 (21) 9240-7281 e-Mail: contato@bufaloinfo.com.br