Utilizando A API do Google Maps no ASP.NET
Este artigo destina-se a mostrar como utilizar a API do Google Maps integrada a um site ASP.NET, para que possamos exibir a localização de endereços diretamente na nossa página.
Read more
Este artigo destina-se a mostrar como utilizar a API do Google Maps integrada a um site ASP.NET, para que possamos exibir a localização de endereços diretamente na nossa página.
Read more
Criando uma aplicação em C# com o MongoDB
Nós desenvolvedores de software estamos acostumados a escrever além do código da nossa linguagem de programação preferida e/ou de trabalho, escrever também código SQL para procedures, views, criação de tabelas, etc. Mas… E se o seu banco não precisasse de código SQL? Se ele não tivesse procedures, views, triggers ou quaisquer outros comandos SQL? Difícil de imaginar, não? Pois é o que veremos na prática neste artigo.
Read more
O envio de e-mails é uma tarefa comum do dia-a-dia. Nossa comunicação com colegas de trabalho, com clientes, parentes e amigos. É uma ferramenta assíncrona, que permite que vejamos e guardemos textos, imagens e outros arquivos aos quais precisaremos no futuro, ou algo divertido ou belo que gostamos e tenhamos vontade de manter.
Um dos usos muito comuns que temos para o e-mail é para feedbacks e comunicação com clientes. Empresas costumam destinar uma sessão dos seus sites para esse tipo de comunicação, onde preenchemos um pequeno cadastro, geralmente contendo apenas o nome de quem pretende entrar em contato, e-mail para retorno, uma lista de assuntos para escolhermos e a mensagem. Isto é mais útil e seguro do que simplesmente divulgar um e-mail para contato, levando-se em conta o fato dos milhões de bots que escaneiam a internet em busca de endereços de e-mail, para envio de spam. Baseado neste modelo que é quase padrão, criaremos uma página “fale conosco”, fazendo envio automático de e-mails em ASP.NET.
De início, crie um novo projeto web no Visual Studio 2008. Dê a ele o nome de EnviodeEmails, que será também o nome do nosso projeto ASP.NET. Dentro desta solução, criaremos dois projetos, um será o projeto web, e o outro será onde teremos nossas regras, chamado de RegrasDeNegocio, com a classe Negocio. Por questões de desempenho e segurança (visto que teremos de mexer com nome de usuário e senha na conexão com o provedor de email), o código de manipulação de dados será efetuado em outra camada que não a de apresentação.

O .NET Framework possui classes nativas específicas para envio de e-mail. Estas classes podem ser encontradas no namespace System.Net.Mail. Usaremos também o namespace System.Net para criar um objeto de credenciais de rede, necessário para autenticação no servidor de e-mail. Após esta breve explicação, mãos à obra.
Criei um formulário simples, com três caixas de texto (nome do remetente, email do remetente e mensagem, sendo esta última multiline). Uma dropdownlist com alguns itens que serão o assunto do e-mail, uma checkbox para caso o remetente queira receber uma cópia do e-mail, um label que exibirá uma mensagem após o envio do e-mail e o botão de envio. Coloquei também um script manager e um update panel, para dar um efeito visual instantâneo. Observe abaixo como ficou a tela:

Vejamos como fica o code-behind da nossa página, o arquivo faleconosco.aspx.cs:
Observe que a nossa classe negócio possui um método abstrato, cujos parâmetros são: email do remetente, nome do remetente, assunto, mensagem e se deseja receber uma cópia ou não. A chamada a esse método é executada dentro de um bloco try-catch no botão de envio na tela, que captura qualquer erro que possa ocorrer, e exibe no label para o usuário uma mensagem caso haja algum problema no envio do e-mail, ou uma mensagem de confirmação caso haja sucesso no envio.

Visual da página após envio de email com sucesso.
Vamos agora dar uma olhada no código da classe Negocio, onde está de fato o código para o envio de email:
No código acima, utilizei o endereço de SMTP e a porta de conexão do Gmail. Este endereço e porta podem variar de acordo com o seu provedor de email.
Espero que tenham gostado. Dúvidas e sugestões, o artigo está aberto a comentários.
Abraços e keep coding!
Introdução
Importar arquivos do Excel para uma base de dados SQL Server é uma tarefa comum para DBAs e desenvolvedores. Além disso, no caso de um data warehouse, é necessário extrair dados de várias fontes. Na maioria das vezes, o Excel é uma delas.
Como sabemos, importar e exportar dados do excel é simples. É somente arrastar alguns controles dataflow e configurar de acordo com a sua necessidade.
Importando arquivos do Excel 2007
Se você precisa importar um arquivo do Excel, pode usar um Excel Source dos Data Flow Sources no SQL Server Integration Services (SSIS) e selecionar a versão correta na lista.

Repare que o ultimo item da lista são arquivos das versões do Microsoft Excel 97-2005, o que significa que não há oficialmente como importar arquivos do Excel 2007 à partir desta lista. No entanto, seguindo os passos abaixo, conseguirá importar arquivos do Excel 2007 para o SQL Server.
1. Arraste um data flow source do tipo OLE DB Source para o data flow task.
2. Dê um duplo clique no OLE DB Source e clique no botão New para criar um OLE DB Connection Manager.
3. Clique no botão New na tela Configure OLE DB Connection Manager.
4. Selecione Native OLE DB\Microsoft Office 12.0 Access Database Engine OLE DB Provider à partir da lista de provedores OLE DB.
5. Selecione a opção All e no item Extended Properties digite Excel 12.0. Depois disso, você verá uma tela como a imagem abaixo:

6. Digite o nome do arquivo (incluindo o diretório) e certifique-se que ele tem a extensão xlsx.
7. Clique em OK, você será direcionado à tela inicial, para selecionar a pasta de trabalho (worksheet) do Excel.
Exportando para um arquivo do Excel 2007
Não há diferenças para exportar para um arquivo do Excel. É só modificar de novo o destino da conexão como antes.
A introdução do AJAX Control toolkit abriu muitas possibilidades interessantes para desenvolvimento de interfaces de usuário mais ricas em ASP.NET. Adicione a isso uma IDE maravilhosa como o Visual Studio, e obtemos resultados estonteantes, sem muito esforço.

Callouts para cada validator

Modal exibindo os erros ao clicar no botão
Neste artigo, veremos como melhorar as validações client-side usando o AJAX Control Toolkit. Abaixo estão screen shots do que nós estamos tentando conseguir. O propósito disto é melhorar a experiência do usuário com muito pouco trabalho.
Criando um form simples
Usando o Visual Studio (ou o Visual Web Developer) crie um novo “ASP.NET Web Application“ (File>>New>> Project>>Visual C#>>Web>>ASP.NET Web Application). Eu criei um simples formulário, como esse abaixo:

Um formulário ASP.NET simples.
Como podemos ver, ele se parece com qualquer outro formulário em ASP.NET. Ele tem alguns textboxes, e labels correspondentes. Eu adicionei alguns validators para cada textbox. Name e email são obrigatórios, definidos pelo “RequiredFieldValidator”. A idade deve estar entre 18 e 100, garantida pelo “RangeValidator”. Existem “RegularExpressionValidator”s para email, e podemos usar validators feitos por nós mesmos para definir o CEP. E por último, um botão “Submit”, ou seja: Uma página ASP.NET simples.
Adicionando os callouts dos validadores
Primeiro, colocamos um controle “ValidationSummary” na página. Agora, todos os nossos erros serão exibidos em um único lugar. Isto será útil para implementar a janela modal na próxima sessão. Note que coloquei a propriedade “Text” dos validators para “*”, pois desejamos que as verdadeiras mensagens de erro sejam exibidos no validation summary.
Os callouts são efetuados usando o “ValidatorCalloutExtender” do AJAX Control Toolkit. Arraste um “ValidatorCalloutExtender” do toolbox para a tela. Defina o “TargetControlID” deste extender para o ID do nosso validator. Coloquei cinco validators na minha página, então utilizei o mesmo número de controles “ValidatorCalloutExtender”, um para cada validator. Modifique o “TargetControlID” de cada extender para que aponte para um validator.

Depois de adicionar o validation summary e o ValidatorCalloutExtenders
Por incrível que pareça, isso é tudo o que precisamos para fazer callouts com um efeito bonito. Execute sua página e clique no botão “Submit” sem digitar nada nas textboxes. Você verá essas callouts. Tente digitar informações erradas em qualquer uma das textboxes, um callout aparecerá perto dele, exibindo a mensagem de erro da validação que falhou.
Criando a janela modal (E desabilitando o background!)
A melhor parte do nosso modal é que ele desabilita a janela completamente. Ela adiciona uma camada translucida sobre o background, deixando a tela limpa. Novamente, o AJAX Control Toolkit vem para nos auxiliar. O “ModalPopupExtender” é perfeito para isso.Arraste um controle desse tipo para a tela. Depois disso, criamos uma DIV que vai agir como popup para nós, conforme o código abaixo:
<ajaxToolkit:ModalPopupExtender ID=”ModalExtnd1″
runat=”server” TargetControlID=”lblHidden”
PopupControlID=”SummaryDiv” BackgroundCssClass=”popupbg” >
</ajaxToolkit:ModalPopupExtender>
<div id=”SummaryDiv” class=”popupdiv”>
<table width=”100%” style=”font-family: “Trebuchet MS”, Tahoma, Verdana”>
<tr><td bgcolor=”skyblue”>
Errors on this page !
</td></tr>
<tr><td>
<asp:ValidationSummary id=”ValSum1″ runat=”server” Font-Names=”Arail”>
</asp:ValidationSummary>
</td></tr>
<tr><td align=”center”>
<input type=”button” value=”OK” onclick=”$find(“ModalExtnd1”).hide();”/>
</td></tr>
</table>
</div>
<asp:Label ID=”lblHidden” runat=”server” Text=”hidden” CssClass=”hidelbl”>
</asp:Label>
Nós definimos a propriedade “PopupControlID” do “ ModalPopupExtender”, para que aponte para “SummaryDiv”, o id da <div> recém criada. A propriedade “TargetControlID” do ModalPopupExtender, precisa ser definida. No nosso caso nós iremos definí-la apontando para um label escondido. Faremos isto por que queremos suprimir a funcionalidade “show/hide” deste extender. Nossa <div> consiste em um botão HTML, no qual a janela modal é escondida quando clicamos. Note também que movemos o validation summary para dentro da nossa <div>.

Form depois da adição do ModalPopupExtender e da
Vejamos agora o CSS para o nosso exemplo:
<style type=”text/css”>
.popupdiv{background-color:ivory;border:solid 1px skyblue;width:250px;display:block}
.popupbg{background-color:gray; filter: alpha(opacity=60); opacity:0.60}
.hidelbl{display:none;}
</style>
Existem três classes definidas aqui. A classe “popupbg” está atribuída à propriedade “BackgroundCssClass” do ModalPopupExtender. Perceba que definimos no código a opacidade do background na janela modal.
Agora, um pouco de javascript. Esta página contém uma função de javascript que é chamada para exibir ou esconder a janela modal, no evento “OnClick” do botão”submit”. Esta função deve ser inteligente o suficiente para exibir a janela modal somente em caso de falha da validação:
<script type=”text/javascript”>
function ShowModalDialog()
{var x= $find(”ModalExtnd1″);
Page_ClientValidate();
if(!Page_IsValid)
x.show();
}
function init()
{document.getElementById(“SummaryDiv”).style.display=“none”;}
</script>
Aqui nós utilizamos a API de validação client-side do “ASP.NET”. Uma chamada ao “Page_ClientValidate” ativa todos os validators. Se algo falhar, a variável global do javascript “Page_IsValid” é definida como falsa. Agora para exibir ou esconder a janela modal dialog box, anexaremos um handler ao botão submit com o seguinte código Server-side:
protected void Page_PreRender(object sender, EventArgs e)
{
btnSubmit.Attributes.Add(”onmouseup”, “ShowModalDialog();”);
}
Execute o exemplo, com alguns dados inválidos. Veremos a exibição da janela modal.

Janela Modal exibindo erros ao clicar no botão submit. Repare que o callout está visível por trás do background translúcido.
Mas há um pequeno problema que eu encontrei aqui. Se a propriedade “display” da <div> estiver definida como “none” ela não será exibida, embora o background seja desabilitado. Então eu tive que definir esta propriedade com o valor “block”. Porém, isto nos traz outro problema: A <div> fica visível por uma fração de segundo, quando a página carrega. Para resolver isto, eu tive que adotar uma solução um tanto quanto deselegante, mas funcional. Defina no código da página:
<body onload=”init();”>
Execute o exemplo novamente. Desta vez a <div> não vai piscar quando a página carregar!
Quaisquer sugestões, comentários e críticas são sempre bem-vindos. Abraços e keep coding!
Comentários