Desenvolvimento - ASP. NET
Curso ASP.NET 3.5 em VB.NET e C# - WebParts
WebParts nos permite criar páginas com conteúdo gerenciável pelo usuário, onde esse pode arrastar controles, mudar aparências, ocultar o que não for preciso ou exibir novamente, enfim, traz para o ambiente Web uma interatividade completa entre o usuário e a aplicação, tudo isto com persistência.
por Fernando Amaral8. WebParts
WebParts não é um conceito novo, mas que surgiu a partir do ASP.NET 2.0 de forma fácil e poderosa.
WebParts nos permite criar páginas com conteúdo gerenciável pelo usuário, onde esse pode arrastar controles, mudar aparências, ocultar o que não for preciso ou exibir novamente, enfim, traz para o ambiente Web uma interatividade completa entre o usuário e a aplicação, tudo isto com persistência.
Uma página ASP.NET utilizando WebParts pode estar em diferentes modos. Cada modo diz respeito ao comportamento do conteúdo da página e como o usuário poderá interagir com este conteúdo. Os quatro modos possíveis são:
· Normal: A página esta em modo normal, não permite quase nenhuma interatividade com o usuário;
· Catalog: Exibe a relação de seções da página, bem como permite ao usuário indicar em qual seção determinado item deverá permanecer. Permite restaurar controles que foram fechados.
· Design: Permite fazer o gerenciamento de zonas em uma página;
· Edit: Permite editar zonas de uma página
O WebPartManager é um controle disponível na guia WebParts e é o responsável por todo o gerenciamento do conteúdo e de seu estado. É o principal controle e é obrigatório quanto trabalhamos com WebParts.
O gerenciamento de estado e conteúdo do WebPartManager é feito utilizando um banco de dados do SQL Server 2005, de nome ASPNETDB.MDF, que pode ser encontrando dentro da pasta App_Data.
WebPartZone
Outro controle importantíssimo e essencial é o WebPartZone. Através deste podemos definir as zonas onde serão agrupados o conteúdo da página. Este controle é um container para controles comuns, que de forma declarativa devem estar dentro da tag ZoneTemplate.
Crie uma nova aplicação ASP.NET;
Coloque sobre o Web Form criado um controle WebPartManager;
Coloque sobre o Web Form criado um controle WebPartZone;
Através da Smart Tag escolha uma das opções de auto-formatação;
Arraste para dentro do WebPartZone criado dois controles textbox;
Rode a aplicação
Com esta simplicidade nossa aplicação já contem alguma interatividade. Observe que cada controle dentro da WebPartZone pode ser minimizado ou fechando, através da seta a direita do controle:
Caso não apareça em sua aplicação o menu, ou mesmo se você não consegue alterar o modo de sua página, basta você autenticar o usuário que esta acessando a página, ou seja, não permitir acesso anônimo. A maneira mais simples de faz isto é utilizando autenticação integrada do Windows. |
Se você fechar um controle, não conseguirá mais restaurá-lo, mesmo que reinicie a aplicação. Isto porque o WebPartManager mantém o estado da aplicação. Na próxima seção veremos que no modo Catalog podemos trazer os controles fechados de volta ao formulário. |
Observe que no exemplo acima os controles possuem um texto personalizado, Primeiro e Segundo. Isto pode ser feito através do atributo Title de cada controle contido dentro da Zone Template. Isto deve ser feito de forma declarativa, pois esta não é uma propriedade do controle:
<ZoneTemplate> <asp:TextBox Title="Primeiro"
ID="TextBox1" runat="server"></asp:TextBox> </ZoneTemplate> |
Você também pode personalizar os textos do Menu de controle através das propriedades CloseVerb e MinimizeVerb, procurando pelo atributo Text. Outras mensagens e rótulos que surgirão mais adiante poderão também ser personalizadas, basta procurar a propriedade equivalente.
Como dissemos o modo padrão de uma página é o Normal. Vamos ver agora como colocar uma página em modo Catalog, e quais as funcionalidades deste modo. Porém antes vamos criar mais duas zonas, para isto adicione mais dois novos controles WebPartZone ao formulário. Dentro do primeiro adicione dois controles Button, e no segundo dois controles CheckBox. Adicione um terceiro botão, alterando a propriedade text para Catalog, porém não o coloque dentro de nenhuma zona.
Para que seja possível colocar a página em modo catalogo você deve adicionar um controle CatalogZone. De ao mesmo uma auto formatação. O Controle CatalogZone é um container para Catálogos de Página. Coloque um controle PageCatalogPart dentro do CatalogZone.
De um duplo clique sobre o botão Catalog, no manipulador de evento criado adicione o seguinte código:
Dim mgr As WebPartManager mgr = WebPartManager.GetCurrentWebPartManager(Page) mgr.DisplayMode = mgr.SupportedDisplayModes.Item("Catalog") |
WebPartManager mgr; mgr = WebPartManager.GetCurrentWebPartManager(Page); mgr.DisplayMode = mgr.SupportedDisplayModes["Catalog"]; |
O código acima declara um tipo WebPartManager e recebe o gerenciador da página por referencia, em seguida altera seu modo para Catalog. Rode a aplicação e a coloque no modo Catalog. Neste modo você pode:
Restaurar um controle fechado. Note que através das zonas listadas no DropDownList Add to você pode inclusive restaurar o controle em outra zona:
Arrastar controles entre as zonas. Para isto basta clicar no titulo do controle e arrastá-lo até a posição desejada:
Você pode ainda querer voltar a página ao modo normal. Para isto adicione um novo botão externo a qualquer zona, coloque o titulo Normal e adicione o seguinte código:
Dim mgr As WebPartManager mgr = WebPartManager.GetCurrentWebPartManager(Page) mgr.DisplayMode = mgr.SupportedDisplayModes.Item("Browse") |
WebPartManager mgr; mgr = WebPartManager.GetCurrentWebPartManager(Page); mgr.DisplayMode = mgr.SupportedDisplayModes["Browse"]; |
As alterações que o usuário faz nas zonas são persistentes, voltar ao modo normal não irá desfazê-las. |
Modo Design
Neste modo o usuário pode, alem de minimizar e fechar um controle, arrastá-los de uma zona para outra ou mesmo ordená-los, tarefas que são possíveis também no modo Catalog, porém sem exibir o controle CatalogZone e sem possibilidade de mostrar um controle oculto.
Veja abaixo um exemplo de como colocar a página em modo Design:
Dim mgr As WebPartManager mgr = WebPartManager.GetCurrentWebPartManager(Page) mgr.DisplayMode = mgr.SupportedDisplayModes.Item("Design") |
WebPartManager mgr; mgr = WebPartManager.GetCurrentWebPartManager(Page); mgr.DisplayMode = mgr.SupportedDisplayModes["Browse"]; |
O modo mais complexo e rico em funcionalidades é o modo de Edição. Através dele o usuário final poderá personalizar inúmeros aspectos dos controles, como aparência, comportamento e layout.
O Modo de edição é possível com a adição do controle EditorZone, este também é um container, que pode receber um ApperanceEditorPart e/ou BehaviorEditorPart e /ou LayoutEditorPart e /ou PropertyEditorPart.
Vamos os dois primeiros em funcionamento, para isso adicione um controle EditorZone a sua página e um button com a propriedade text configurada como Edit. No manipulador de evento do botão adicione o seguinte código:
Dim mgr As WebPartManager mgr = WebPartManager.GetCurrentWebPartManager(Page) mgr.DisplayMode = mgr.SupportedDisplayModes.Item("Edit") |
WebPartManager mgr; mgr = WebPartManager.GetCurrentWebPartManager(Page); mgr.DisplayMode = mgr.SupportedDisplayModes["Edit"]; |
É preciso fazer algumas configurações para o modo de edição funcionar.
Primeiramente adicione o seguinte nó ao arquivo web.config de sua aplicação
<webParts> <personalization> <authorization> <allow users="*" roles="admin" verbs="enterSharedScope"/> </authorization> </personalization> </webParts> |
Esta configuração deve estar dentro do nó system.web.
Em seguida adicione o seguinte código ao evento PageLoad da página:
If WebPartManager1.Personalization.Scope = PersonalizationScope.User _ AndAlso WebPartManager1.Personalization.CanEnterSharedScope Then WebPartManager1.Personalization.ToggleScope() End If |
if (WebPartManager1.Personalization.Scope = PersonalizationScope.User && WebPartManager1.Personalization.CanEnterSharedScope) { WebPartManager1.Personalization.ToggleScope(); } |
Para não tornar o aprendizado mais claro e simples, vamos estudar um os quatro editores existentes.
Adicione um controle ApperanceEditorPart ao EditorZone. Rode a aplicação e clique em Edit para permitir que um controle entre em modo de edição. Observe que em todo o controle, no menu a esquerda, surge uma nova opção: Edit:
Ao clicar na opção Edit, as opções do controle ApperanceEditorPart que adicionamos ao container são exibidas, você pode alterá-las a seu gosto. Para persistir as alterações clique em Apply, ou Cancel para cancelar.
As alterações irão persistir mesmo se você fechar o navegador.
Remova o ApperanceEditorPart e adicione um BehaviorEditorPart, clique no botão Edit e em seguida no comando edit de algum controle:
Veja que são muitas configurações de comportamento possíveis. Faça alguns testes, por exemplo, desmarque a opção Allow Close e verifique que a opção de fechar desaparece do controle.