The Club
terça-feira, 9 de fevereiro 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
[Entre em contato com o autor ]
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. Visite o blog http://weblogs.asp.net/renatohaddad.
Feed de artigos.
Feed de artigos deste autor.
Gere seu feed personalizado  
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
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
Programação Assíncrona no ASP.NET MVC
Compactação de ViewState em ASP.NET
Criando e utilizando User Controls no Silverlight
Gerando JavaScript do lado do servidor com ASP.NET
Introdução às Dependency Properties
Efeitos de imagem com ASP.NET e LightBox 2
Marca d´agua em imagens usando System.Drawing
Asp.Net + Twitter sem API de terceiros
Trabalhando com Accordion
Trabalhando com o componente TabContainer
Por que alguns grupos de usuários falham?
Suggest/Autocomplete com C#, Asp.Net e jQuery
Galeria de Imagens com C#, Asp.NET e jQuery
Recorte de Imagens com C#, Asp.NET e jQuery
Curso ASP.NET 3.5 em VB.NET e C# - Relatórios com Crystal Report
Curso ASP.NET 3.5 em VB.NET e C# - Distribuindo sua Aplicação
ModalDialogExtender
Curso ASP.NET 3.5 em VB.NET e C# - Eventos da aplicação
Curso ASP.NET 3.5 em VB.NET e C# - Criando uma página de erros personalizada
Curso ASP.NET 3.5 em VB.NET e C# - Criando e Consumindo WebServices
Configurando e utilizando a Session
Migrando de ASMX para WCF
WCF Service no IIS
WCF, IIS e Threads
UserName e Certificados
Melhorias na configuração de serviços WCF
Customizando o ServiceHost
Problemas com modelos de aplicações web
Definições da Aplicação (AppSettings)
Curso ASP.NET 3.5 em VB.NET e C# - ASP.NET Ajax
Produtos relacionados Topo
Pacote: Promoção: Portal de Vídeos .Net + CD Novidades das Linguagens (válido somente para pagamento via boleto bancário)
Pacote: Promoção Linq To SQL (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)
Pacote: Promoção Linq + Asp.Net
Livro: Cloud Computing - Computação em Nuvem
Pacote: Pacote promocional Linq to SQL
CD/DVD: DVD de Treinamento E-Commerce com Visual Web Developer
Livro: ASP.NET AJAX em Ação
Livro: Construindo um Portal Web 2.0 com ASP.NET 3.5
CD/DVD: CD de Treinamento - Office SharePoint 2007 para Desenvolvedores WEB
CD/DVD: DVD de Treinamento - Crie uma aplicação ASP.NET com LINQ TO SQL
Livro: Desenvolvendo para web usando o Visual Studio 2008
Livro: ASP.NET 3.5 para Leigos
Livro: ASP.NET 2.0 Web Parts em Ação
CD/DVD: DVD de Treinamento Explorando o LINQ para SQL
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)
Pacote: Pacote ASP.NET - 4 CDs (Implementando AJAX em páginas ASP.NET 3.5 com o Visual Studio .NET 2008 + ASP.NET 2.0 Básico + Um mergulho no Controle GridView do ASP.NET 2.0 + Explorando as novidades)
CD/DVD: CD de Treinamento – Implementando AJAX em páginas ASP.NET 3.5 com o Visual Studio .NET 2008
Livro: Professional ASP.NET Ajax
Livro: Faça um Site - ASP.NET com Enfoque em VB.NET e Linguagem SQL
CD/DVD: CD de Treinamento ASP.NET para Iniciantes - Visual Studio 2008
Livro: Windows Presentation Foundation
Livro: Pro WF Windows Workflow no .NET 3
Livro: Criação de Sites Profissionais em ASP (ASP.NET)
Livro: Como programar com ASP.Net e C#
Livro: Web 2.0 e Mashups - Reinventando a Internet
Livro: Aprenda ASP.NET AJAX em 15 Passos
Livro: Gerenciamento de Projetos - 6a. edição
© 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: 1.942
Artigos: 2.746
Cases: 14
Oportunidades: 4.185
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
Baixe o Visual Studio 2010 Beta
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 Mobile (válido somente para pagamento via boleto bancário)
Promoção Mobile (válido somente para pagamento via boleto bancário)
De: R$ 239,00
Por: R$ 146,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
Promoção Linq To SQL (válido somente para pagamento via boleto bancário)
De: R$ 249,00
Por: R$ 156,00
Promoção ASP.Net com Banco de Dados (válido somente para pagamento via boleto bancário)
De: R$ 249,00
Por: R$ 146,00
CDs
DVD de Treinamento LINQ TO SQL e Entity Framework Avançado
DVD de Treinamento LINQ TO SQL e Entity Framework Avançado
De: R$ 83,00
Por: R$ 73,00
Curso completo de MySQL
Por: R$ 89,00
DVD de Treinamento - ISA Server 2006 - Implementação
De: R$ 83,00
Por: R$ 73,00
CD de Treinamento Adobe Photoshop CS4 Extended – 3D Arte
De: R$ 83,00
Por: R$ 53,00
DVD de Treinamento - Recursos avançados do Windows Mobile 6
De: R$ 83,00
Por: R$ 73,00
Livros
Aprendendo SQL
Aprendendo SQL
Por: R$ 83,00
Web Services SOAP em Java
Novatec
Por: R$ 42,00
Guia Mangá de Bancos de Dados
Novatec
Por: R$ 39,00
Guia Mangá de Estatística
Novatec
Por: R$ 39,00
Guia Mangá de Eletricidade
Novatec
Por: R$ 39,00
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
Alfred Reinold Baudisch
Luiz Felipe de Freitas
Anderson Patricio
Ramon Durães
Robert Martim
Fernando Amaral
Eric C M Oliveira
Marcio Franco
Os 10+ | Artigos do dia
HTML Básico
HTML Avançado
SAP Business One - Implementação e Localização para o Brasil – Overview
PL/SQL - Procedures e Funções
ASP.NET 2.0 - Explorando o GridView
Tutorial de Tabelas Dinâmicas no Excel – Parte 1
PHP: Upload de imagens com segurança
Nota Fiscal Eletrônica - Geração, Assinatura e Transmissão
Criando aplicativos para o Orkut
Instalando Apache + MySQL + PHP 5 no Windows