Revista Active Delphi
quinta-feira, 2 de setembro de 2010
Busca  
Porta 80 Web Hosting
 :: Acessibilidade
Ir para conteúdo principal: ALT + 1
 :: Participe
Seja um autor de CD/DVD de Treinamento
Publique um artigo
Publique uma oportunidade
Publique uma notícia
Publique um curso
Publique uma dica
Publique um código
 :: Informativo
Receba nossos informativos por e-mail.
E-mail:   
 
Digite a palavra abaixo:  
 
 
 :: Oportunidades
Cadastrar oportunidades
Gerenciar suas oportunidades
Cadastrar nova empresa
 :: Especiais
Básico de C++
C++ Builder
Curso ASP.NET 3.5 em VB.NET e C#
Guia Prático de HTML
Testes com Visual Studio Team System 2008
 :: Desenvolvimento
ActionScript
ADO.NET
ASP
ASP.NET
Automação Comercial
C#
C/C++
Coldfusion
CSS
Delphi
Disp. Móveis
HTML
Java
Javascript
LSL (Second Life)
Modelagem
PHP
Python
Sharepoint
Silverlight
SQL
VBA (Office)
Visual Basic
Visual Basic .NET
Visual Fox Pro
WCF/WPF
Web Services
XML
 :: Infra
BizTalk Server
CRM
Exchange Server
ForeFront / Antigen / IAG
Interoperabilidade
ISA Server
Linux
MOF
MS Dynamics CRM
Network
OCS / LCS
Outlook
Powershell e Scripts
Redes
Segurança
System Center e Gerenciamento
Virtualização
Windows
Windows Server
 :: Banco de Dados
Access
Caché
Firebird
Interbase
MySQL
Oracle
SQL Server
Sybase
 :: Gerência
Arquitetura
Ciclo de Vida de Desenvolvimento
Controle de Versão
Estimativas
Metodologias
MOF
Qualidade e Testes
 :: Design
Corel
Flash
Photopaint
Photoshop
 :: Livros
Análise Sistemas
Aplicativos
Banco de Dados
Certificação
Design e CAD
Gerência
Hardware
Internet
Programação
Programação Web
Rede
Segurança
Servidores
Sistemas Operacionais
 :: CDs/DVDs
Desenvolvimento
Infra
Design
 :: E-Books
.NET 2.0 (VS 2005)
.NET 1.1 (VS 2003)
SQL Server
Excel 2007
Excel 2003
Access 2003
ASP 3.0
Delphi
Java
Artigos


MVP Profile
Formatar dados com o ASP.NET Dynamic Data
Por: Renato Haddad
MVP, MCPD e MCTS, palestrante em eventos da Microsoft em diversos países, ministra treinamentos focados em produtividade com o VS.NET 2008, ASP.NET 3.5, Reporting Services e Windows Mobile.
Feed de artigos.
Feed de artigos deste autor.
Gere seu feed personalizado  
MS TechEd 2010

Formatar dados com o ASP.NET Dynamic Data
Publicado em: 05/05/2009

Sumário:

Neste artigo vou abordar como criar uma aplicação dinâmica de dados oriundos a partir de um modelo de dados do Linq To SQL, aplicar uma formatação nos dados e como ocultar algumas tabelas.

Introdução

No artigo http://www.linhadecodigo.com.br/Artigo.aspx?id=2224 mostrei detalhadamente como criar uma aplicação dinâmica com o ASP.NET. Neste artigo vou ensinar a mostrar os dados formatados das tabelas que estiverem inseridas no modelo de objeto relacional. Outra funcionalidade será como aplicar uma configuração para exibir ou não uma determinada tabela para o internauta.

Como sabemos, o ASP.NET Dynamic Data é a maneira mais rápida e segura de se criar uma aplicação ASP.NET baseada em um modelo de objeto relacional, seja no ADO Entity Framework ou no LINQ TO SQL. Tudo parece tão rápido, prático e dinâmico que parece mágica, mas não é. No artigo anterior você viu os detalhes dos bastidores deste tipo de aplicação, portanto, os detalhes você pode ler no respectivo artigo.

Eu vou criar uma aplicação passo a passo para que não fique nenhuma dúvida em relação a vestígios de qualquer outra aplicação. Você irá precisar do banco de dados Northwind do SQL Server, o Visual Studio .NET 2008 com o SP1 instalado.

Criação do projeto

Com o VS.NET 2008 aberto, crie um novo tipo de projeto (CTRL + SHIFT + N). Selecione a linguagem C#, o tipo de projeto Web, o template chamado Dynamic Data Web Application (Figura 1). É este o modelo a ser usado, portanto, dê um nome para a aplicação, neste caso DynamicDataFormatar e informe qual o diretório será criado.

 

Figura 1 – Tipo de projeto

 

Clique no botão OK para criar o projeto. O próximo passo é montar uma fonte de dados, então, no Solution Explorer, dê um clique com o botão direito e selecione Add New Item (Figura 2). Em Categories selecione Data e em Templates, selecione LINQ TO SQL Classes. O nome será northwind.dbml.

 

Figura 2 – Modelo de objeto relacional

 

Dê um clique no botão Add para criar o arquivo em branco. No Server Explorer já tenho uma conexão criada com o banco de dados Northwind. Caso você não tenha, basta criar uma nova conexão e apontar para o Northwind. Selecione as tabelas Categories, Employees e Products (Figura 3) e arraste-as para dentro do arquivo .dbml criado.

 

Figura 3 – Tabelas selecionadas no banco de dados

 

Veja na Figura 4 arquivo dbml como ficaram as tabelas, só que agora chamamos de classes e propriedades, mostrando todas as colunas (propriedades) e o relacionamento entre as mesmas, se houver.

 

Figura 4 – Classes do modelo de objeto relacional de dados

 

Salve este modelo (CTRL + S) e note no Solution Explorer (Figura 5) que o Northwind.dbml contém dois outros arquivos, sendo um de layout e outro com os códigos da classe em si. O melhor de tudo é que o próprio VS.NET 2008 já gera a classe Northwind.designer.cs com todos os códigos prontos. Isto é feito quando arrastamos as tabelas da fonte de dados para o arquivo .dbml. O que acontece se mudar algo na estrutura das tabelas no banco de dados? Como faço para atualizar o modelo? Abra o .dbml, exclua a respectiva tabela e arraste-a novamente do banco de dados. O código será regerado automaticamente.

 

Figura 5 – DBML criado no Solution Explorer

Global.asax

O arquivo Global.asax tem um papel fundamental neste projeto, sem ele nada funcionará. No Globla.asax você precisa informar qual é o nome do arquivo que contém todo o modelo de dados relacional, neste caso, o Northwind. Portanto, abra o global.asax, localize o código abaixo que está comentado. Na última linha deste bloco você irá descomentar a linha e inserir o nome do arquivo que contém o contexto, neste caso é o NorthwindDataContext. Além disto, a segunda coisa mais importante é configurar o ScaffoldAllTables = True, fazendo com que todas as classes/tabelas inseridas no modelo sejam exibidas no menu e passíveis de manutenção de dados.

 

// IMPORTANT: DATA MODEL REGISTRATION

// Uncomment this line to register LINQ to SQL classes or an ADO.NET Entity Data

// model for ASP.NET Dynamic Data. Set ScaffoldAllTables = true only if you are sure

// that you want all tables in the data model to support a scaffold (i.e. templates)

// view. To control scaffolding for individual tables, create a partial class for

// the table and apply the [Scaffold(true)] attribute to the partial class.

// Note: Make sure that you change "YourDataContextType" to the name of the data context

// class in your application.

model.RegisterContext(typeof(NorthwindDataContext), new ContextConfiguration() { ScaffoldAllTables = true });

 

Você deve estar pensando de onde vem o nome NorthwindDataContext? Se você abrir o arquivo Northwind.designer.cs irá notar que o nome da classe é NorthwindDataContext que herda de DataContext. Portanto, se você trocou para outro nome ou pegou outro banco de dados, atente para este nome do contexto.

 

public partial class NorthwindDataContext : System.Data.Linq.DataContext

Execução

Compile o projeto (CTRL + SHIFT + B) e execute-o no browser (F5). Conforme a Figura 6 temos na página principal do site são mostradas as três classes existentes no modelo de objeto relacional (DBML).

 

Figura 6 – Página default do site

 

Se você clicar em Categories será mostrada a página dinâmica que lista todas as categorias os links para edição dos dados, conforme a Figura 7.

 

Figura 7 – Página de categorias

Configurar Empregados

Na página de listagem dos empregados, são mostradas todas as linhas da tabela de empregados (Figura 8). No entanto, perceba que as datas das colunas BirthDate e HireDate estão com um formato errado, afinal, basta exibir a data e não a data e hora.

Figura 8 – Dados dos empregados

 

Então, a solução é customizar o formato das colunas. Para isto, no Solution Explorer, adicione um novo item do tipo Class chamado Employee. Mas, espera um pouco, quem é Employee? Se você abrir o arquivo Northwind.designer.cs irá verificar que Employee já existe, afinal é o objeto oriundo do DBML, conforme o código a seguir.

 

public partial class Employee : INotifyPropertyChanging, INotifyPropertyChanged

 

Correto, mas o truque é exatamente este, nunca, jamais altere nada no DBML porque caso haja alguma manutenção nas tabelas, este arquivo será regerado e você perde tudo. Então, como a classe Employee é do tipo partial class, nada mais justo que estender a classe. Este é um dos fantásticos recursos do .NET Framework 3.5. Voltando ao arquivo Employee que você adicionou, o primeiro passo é alterar a declaração para partial class, ficando:

public partial class Employee

 

Em seguida, antes desta declaração acima, adicione a seguinte linha para definir o metadados que iremos usar da classe. Será preciso adicionar o using System.ComponentModel.DataAnnotations; na lista de using, mas nada que um CTRL + . (ponto) não resolva rapidamente.

[MetadataType(typeof(EmployeeMetadata))]

 

O construtor da classe não terá nada, pois estamos apenas estendendo a classe. Então, adicione o seguinte bloco de código logo abaixo do construtor. Se preciso, adicione o using System.ComponentModel; na lista de using.

 

public class EmployeeMetadata

{

    public object EmployeeID { get; set; }

    [DisplayName("Nome")]

    public object FirstName { get; set; }

    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]

    [DisplayName("Nascimento")]

    public object BirthDate { get; set; }

    [DisplayFormat(DataFormatString = "{0:D}")]

    [DisplayName("Admissão")]

    public object HireDate { get; set; }

}

 

Neste código vamos destacar o DisplayName e o DisplayFormat, ou seja, o primeiro permite você trocar o nome do label (coluna ou label) para o texto declarado, neste caso, Nome, Nascimento e Admissão. Já o segundo permite aplicar uma formatação de acordo com o tipo de dado, neste caso o "{0:dd/MM/yyyy}" mostrará a data com o dia/mês/ano e o "{0:D}" mostrará a data completa. Para efeito de visualização, veja o código completo da classe Employee estendida.

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.ComponentModel.DataAnnotations;

using System.ComponentModel;

 

namespace DynamicDataFormatar

{

    [MetadataType(typeof(EmployeeMetadata))]

    public partial class Employee

    {

    }

 

    public class EmployeeMetadata

    {

        public object EmployeeID { get; set; }

        [DisplayName("Nome")]

        public object FirstName { get; set; }

        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]

        [DisplayName("Nascimento")]

        public object BirthDate { get; set; }

        [DisplayFormat(DataFormatString = "{0:D}")]

        [DisplayName("Admissão")]

        public object HireDate { get; set; }

    }

}

 

É importante você entender o uso do partial class. Isto permite ter diversos arquivos com o mesmo nome, com funcionalidades definidas em tópicos, mas a única condição é que seja do tipo partial class. Salve o projeto, compile e execute-o no browser. Na Figura 9 veja como estão os dados das colunas FisrtName (Nome), BirthDate (Nascimento) e HireDate (Admissão).

 

Figura 9 – Dados formatados

Configurar Produtos

Na configuração de produtos vamos aprender novos atributos, mas a idéia de classe estendida é a mesma. Portanto, adicione um novo item do tipo Class chamado Product com o seguinte código:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.ComponentModel.DataAnnotations;

 

namespace DynamicDataFormatar

{

    [MetadataType(typeof(ProductMetadata))]

    public partial class Product

    {

    }

 

    public class ProductMetadata

    {

        public object ProductID { get; set; }

        public object ProductName { get; set; }

        [Range(0, 280, ErrorMessage = "O preço deverá ser entre 0 e 280")]

        [DisplayFormat(DataFormatString = "{0:n2}")]

        public object UnitPrice { get; set; }

        [Range(0, 1500, ErrorMessage = "A qtde deverá ser entre 0 e 1500")]

        [DisplayFormat(DataFormatString = "{0:n0}")]

        public object UnitsInStock { get; set; }

        [ScaffoldColumn(false)]

        public object ReorderLevel { get; set; }

        [ScaffoldColumn(false)]

        public object Discontinued { get; set; }

        [ScaffoldColumn(false)]

        public object UnitsOnOrder { get; set; }

        [ScaffoldColumn(false)]

        public object SupplierID { get; set; }

    }

}

 

 Aqui temos o DisplayFormat "{0:n0}" para a propriedade UnitPrice para exibir o valor no formato numérico com zero casas decimais. O atributo Range para definir uma faixa de dados permitidos quando o internauta for alterar o preço (UnitPrice), neste caso, o valor deverá estar entre 0 e 280, senão, já mostra a mensagem de erro.

[Range(0, 280, ErrorMessage = "O preço deverá ser entre 0 e 280")]

 

E por fim, o atributo ScaffoldColumn (false ou true) faz com que a propriedade seja ou não exibida no formulário. Salve e execute para visualizar o resultado. Na Figura 10 são exibidas todas as propriedades dos produtos, exceto as que estão como ScaffoldColumn(false).

 

Figura 10 – Lista de produtos

 

Clique em Edit para mostrar o formulário de edição de dados. Digite o valor de 320 no campo UnitPrice e pressione TAB. Veja na Figura 11 que a mensagem de erro já é exibida porque a validação já foi aplicada à propriedade.

 

Figura 11 – Erro na validação

Validação de Dados

Existe outro tipo de validação de dados que podemos aplicar. No arquivo Northwind.designer.cs existe o objeto Product com diversos métodos do tipo partial. Isto significa que você pode estender um método também, não somente uma classe. Portanto, no arquivo Product.cs adicione o seguinte código no evento OnProductNameChanging para validar se o produto inicia com o texto DYN.

 

public partial class Product

{

    partial void OnProductNameChanging(string value)

    {

        if (!value.StartsWith("DYN"))

        {

            throw new ValidationException("O nome deverá iniciar com DYN");

        }

    }

}

 

Execute o projeto, tente alterar o nome de algum produto de forma que o texto não inicie com DYN. Clique no botão Update para salvar. Note que a mensagem de erro já é exibida (Figura 12) porque a condição não foi satisfeita.

 

Figura 12 – Validação de campo

 

Para finalizar este artigo, imagine que o modelo de objeto relacional tivesse uma série de classes onde nem todas deverão ser exibida ao internauta no menu para manutenção de dados. O que fazer para ocultar que toda e qualquer referência a tal classe seja oculta no projeto? Isto é simples, basta você estender a classe e inserir o código [ScaffoldTable(false)] no início da classe.

Conclusão

Customizar a exibição e a validação de dados com o Dynamic Data é um recurso simples, basta você dominar o contexto e os atributos, assim como saber montar um modelo de objetos relacionais e usar o LINQ para usufruir dos melhores recursos do Dynamic Data.

Referências

Este é o link http://www.asp.net/dynamicdata/ do time de Dynamic Data.

Sobre o Autor

Renato Haddad (rehaddad@msn.com  – www.renatohaddad.com ) é MVP, MCT, MCPD e MCTS, palestrante em eventos da Microsoft em diversos países, ministra treinamentos focados em produtividade com o VS.NET 2008, ASP.NET 3.5, LINQ, Reporting Services e Windows Mobile. Visite o blog http://weblogs.asp.net/renatohaddad . Renato é autor do livro LINQ e C# 3.0 – A Solução em Consultas para Desenvolvedores

livroLINQ.jpg

Renato é autor do livro LINQ e C# 3.0 - A Solução em Consultas para Desenvolvedores.
http://www.linhadecodigo.com.br/Livro.aspx?id=3759.







 

Conheça os produtos do autor Renato Haddad

Inclua um comentário sobre o artigo Topo
Elogios e críticas são muito bem vindos, porém o comentário deve ter referência ao artigo em pauta.
O portal e o autor agradecem.
Nome:    
E-mail:      
Comentários:    
Digite a palavra abaixo:  
Para dúvidas técnicas, NÃO UTILIZE ESTE ESPAÇO, utilize nosso fórum de discussão.
http://linhadecodigo.com.br/cs2/forum
 
Comentários sobre o artigo Ver Todos comentários
Renato, parabéns pela publicação ! Simples, objetivo e claro !!!

Este artigo nos fornece tanto base de conhecimento quanto nos conduz ao enriquecimento da linguagem.

Sucesso hoje e sempre !!!
Quem enviou: Paulo Crespo
Postado em: 17/09/2009 00:00:00
Renato,

Primeiramente parabéns pelo artigo.

Tenho uma dúvida quanto a customização do Asp.NET Dynamic Data, pretendo implementar um projeto em 3 camadas, gostaria de saber como eu faço para criar uma partial Class do OR na camada VIEW, sendo que o modelo esta relacionada a uma DLL na Data Layer.

Só consegui fazer as alterações de nome de colunas e etc, criando a partial classe diretamente na raiz do projeto DL.


Quem enviou: Tiago Rosa
Postado em: 26/06/2009 00:00:00
Outros artigos do autor Topo
Como fazer Deploy no ASP.NET 4?
Dez razões para adotar o Linq nas aplicações .Net
Sincronização de Dados no .NET Framework 3.5
ASP.NET Dynamic Data
Como montar um controle ListView do ASP.NET 3.5 com o LINQ?
Vídeo: Como criar e usar Code Snippets no Visual Studio .NET 2008 (Para assinantes)
10 Razões para adotar o ASP.NET 3.5
Vídeo: Dicas e Truques do Visual Studio .NET 2008 - Parte 2 (Para assinantes)
Vídeo: Dicas e Truques do Visual Studio .NET 2008 - Parte 1 (Para assinantes)
Vídeo: Inicializar objetos na linguagem C# 3.0 (Para assinantes)
Vídeo: Truncando dados no GridView (Para assinantes)
Vídeo: Validação de dados em grupo no ASP.NET 2.0 (Para assinantes)
Vídeo: Controle do status da bateria no Windows Mobile 6 (Para assinantes)
Vídeo: Controle Details View no ASP.NET 2.0 (Para assinantes)
Vídeo: Exibir dados no GridView e Details View no ASP.NET 2.0 (Para assinantes)
Vídeo: Filtrando dados com multiplas seleções no SQL Reporting Services 2005
Vídeo: Filtrando dados em relatório no SQL Reporting Services 2005 (Para assinantes)
Vídeo: Formatar linhas e células no SQL Reporting Services 2005 conforme uma condição (para assinantes)
Vídeo: Windows Mobile 6: Pocket para SmartPhone (Para assinantes)
Vídeo: Windows Mobile 6: Banco de Dados (Para assinantes)
Inserindo Hyperlink com parâmetro no GridView do ASP.NET 2.0
Boas razões para adotar o Windows Mobile 6
Windows Mobile 6 Developer Resource Kit
Crie um Álbum de Fotos no Power Point 2007
Filtrar dados na Folha de Dados no MS-Access 2007
Simulando o Hotmail com ASP.NET 2.0
Controles de usuários que só o ASP.NET 2.0 suporta
Voto de paixão: Visual Studio .NET Beta 2, o que é isso?
Saiba porquê desenvolver aplicações para telefones celulares com .NET
Aplicações Móveis no .NET
Publicidade na WEB - Componente AdRotator
Interagindo com DataList em aplicações ASP.NET
Usando componentes com ADO.NET
Dez Razões para Migrar para o ASP.NET
Artigos relacionados Topo
Construindo um List Suggest com ASP.NET Web Services e JQuery
Acesso à Dados com ASP.NET - Parte 7
Acesso à Dados com ASP.NET - Parte 6
Web Site ou Web Application eis a questão
ASP.NET MVC/MVVM - Criando uma sessão de produtos
Acesso à Dados com ASP.NET - Parte 5
ASP.NET MVC Custom Helpers
Acesso a Dados com ASP.NET - Parte 4
Acesso a Dados com ASP.NET - Parte 3
Acesso a Dados com ASP.NET - Parte 2
Acesso a Dados com ASP.NET - Parte 1
Usando DataSet Tipado com ASP.NET
Gerenciador de conteúdo ASP.NET MVC 2 - Kooboo
Criando um Leitor de Arquivos em ASP.NET
Criando um Leitor de RSS em ASP.NET
Trabalhando com Update Panel no ASP.NET
Utilizando jQuery para invocar Actions
Enviando Emails com ASP.NET usando System.Net.Mail
Criando editor de texto personalizado em Asp.Net
JQuery auto complete em Asp.Net
Autenticação via Claims no ASP.NET MVC
Detectando erro a todo custo
Explorando os módulos do WIF para o ASP.NET
Autenticação via Claims no ASP.NET WebForms
Uma nova forma de Autenticação/Autorização
Autenticação e Autorização no ASP.NET MVC
Explorando Segurança do ASP.NET - Roles
Explorando Segurança do ASP.NET - Membership e MembershipUser
Programação Assíncrona no ASP.NET MVC
Compactação de ViewState em ASP.NET
Produtos relacionados Topo
CD/DVD: CD de Treinamento Criando Aplicações Asp.Net em Camadas (parte integrante do portal de vídeos .Net)
Pacote: Promoção: Portal de Vídeos .Net + CD Novidades das Linguagens (válido somente para pagamento via boleto bancário)
Pacote: Promoção ASP.Net com Banco de Dados (válido somente para pagamento via boleto bancário)
CD/DVD: DVD de Treinamento E-Commerce com Visual Web Developer
CD/DVD: CD de Treinamento - Office SharePoint 2007 para Desenvolvedores WEB
Livro: Desenvolvendo para web usando o Visual Studio 2008
Pacote: Pacote: Desenvolvedor Web Kit III (4 CDs)
Pacote: Pacote: Desenvolvedor Web Kit II (3 CDs)
Pacote: Pacote: Desenvolvedor Web Kit I (2 CDs)
CD/DVD: CD de Treinamento - RAD Studio 2007 e ASP.NET 2.0 (Delphi)
CD/DVD: CD de Treinamento ASP.NET para Iniciantes - Visual Studio 2008
E-Book: ASP.NET Ajax com C# e VB.NET (E-Book com entrega via download)
CD/DVD: CD de Treinamento sobre LINQ to SQL para iniciantes com Visual Studio .Net 2008
CD/DVD: CD de Treinamento Introdução a banco de dados com SQL Server 2005 Express
CD/DVD: CD de Treinamento Novidades das Linguagens C# 3.0 e VB 9 (Visual Basic 9)
CD/DVD: CD ASP.NET 2.0 - Atualização Rápida (Visual Studio .NET 2005)
CD/DVD: CD - Treinamento de ASP.NET 2.0 AJAX Extensions
Livro: ASP.NET Utilizando C# - De Programador para Programador
E-Book: E-book: ASP.NET - Uma revolução na construção de sites e aplicações Web (via download)
Livro: Programando em C#.Net para Web: Guia Rápido Usando Visual Studio.Net 2003
Livro: UML na Prática: do Problema ao Sistema
© Copyright 2001-2010 Codeline Editora, Comércio e Tecnologia Ltda. | Política de privacidade e de uso | Anuncie | Fale conosco

» Site hospedado na Porta 80 Web Hosting «
Nossos números
Dicas: 1.314
Códigos/scripts: 279
Funções de VBScript : 90
Funções JScript : 05
Livros: 1.805
Notícias: 2.623
Artigos: 3.020
Cases: 14
Oportunidades: 4.591
Vídeos .Net: 484
Publicidade

Conheça a loja do Linha de Código.

Microsoft indica Linha de Código.

Assine a Revista Mundo .NET
Portal de Vídeos .NET - os melhores vídeos .NET estão aqui
O que você fará com o Visual Studio 2010?
Revista Codificando .Net

Siga-nos no Twitter

Linha de Código no Orkut
Fórum de discussão do portal Linha de Código
Feeds
Oportunidades
Notícias
Artigos
Artigos personalizado
       (Por assunto)
Artigos personalizado
       (Por autor)
Portal Vídeos .NET
Portal Vídeos Delphi
LC Blog
       (Onde você faz a notícia)
Promoções
Promoção Wordpress + Tabless (válido somente para pagamento via boleto bancário)
Promoção Wordpress + Tabless (válido somente para pagamento via boleto bancário)
De: R$ 149,70
Por: R$ 99,80
Promoção PHP + MYSQL Intelimax (válido somente para pagamento via boleto bancário)
De: R$ 308,00
Por: R$ 219,00
Promoção Especial Infra
De: R$ 175,95
Por: R$ 136,00
Promoção: Portal de Vídeos .Net + CD Novidades das Linguagens (válido somente para pagamento via boleto bancário)
De: R$ 162,00
Por: R$ 89,00
Promoção VSTS (válido somente para pagamento via boleto bancário)
De: R$ 219,00
Por: R$ 146,00
CDs/DVDss
DVD Desenvolvimento de Games - Programando Jogos com o 3D Game Studio
DVD Desenvolvimento de Games - Programando Jogos com o 3D Game Studio
Por: R$ 59,00
DVD Curso de CorelDraw X4
Por: R$ 79,90
DVD Curso de Fireworks CS4
Por: R$ 49,90
DVD Curso de Indesign CS4
Por: R$ 55,00
DVD Curso de Efeitos Digitais
Por: R$ 49,90
Livros
MSProject 2007 - Metodologia e Critérios de Qualidade para o Gerenciamento de Projetos
MSProject 2007 - Metodologia e Critérios de Qualidade para o Gerenciamento de Projetos
De: R$ 129,00
Por: R$ 77,40
Foundation FLASH CS3 para Designers
Ciência Moderna
De: R$ 139,00
Por: R$ 83,40
ALGORITMOS O Guia Essencial
Alta Books
De: R$ 64,90
Por: R$ 58,40
Treinamento Prático em Dreamweaver
Digerati Books
Por: R$ 14,95
Estudo Dirigido de Adobe Photoshop CS4 em português - Para Windows
Erica
De: R$ 88,00
Por: R$ 74,80
E-Books
Manual Completo de Estudos MCSE 70-270 - Instalando, Configurando e Administrando o Windows XP (506 páginas) - Entrega via download
Manual Completo de Estudos MCSE 70-270 - Instalando, Configurando e Administrando o Windows XP (506 páginas) - Entrega via download
Por: R$ 30,00
Manual de Estudos - Exame 70-291 - Windows Server 2003 (606 páginas) - entrega via download
Por: R$ 30,00
Dominando MS – Visio ® em 20 Passos - Melhores Práticas em Gestão de Projetos (entrega via download)
Por: R$ 30,00
MS-Project® 2007 - Melhores Práticas de Gestão de Projetos - Dominando MS – Project ® em 20 Passos (e-book com entrega via download)
Por: R$ 20,00
Banco de dados com C# e Visual Studio .Net 2005 (entrega via download)
Por: R$ 20,00
Os 10+ | Autores do dia
Israel Aéce
Júlio Cesar Fabris Battisti
Anderson Patricio
Luiz Felipe de Freitas
Marcio Franco
Eric C M Oliveira
Robert Martim
Ramon Durães
Alessandro de Oliveira Faria
Alfred Reinold Baudisch
Os 10+ | Artigos do dia
HTML Básico
HTML Avançado
Criando aplicativos para o Orkut
PL/SQL - Procedures e Funções
Tutorial de Tabelas Dinâmicas no Excel – Parte 1
Como configurar Conexão Remota no SQL Server 2005
WCF – Gerenciamento de Instância
Básico de C++: Estrutura de um programa em C++
ASP.NET 2.0 - Explorando o GridView
Tutorial: Desenhando com o Corel Draw