Atualmente já não é mais segredo para ninguém que a produtividade é um fator muito importante para o desenvolvimento de aplicações, sejam elas web ou windows. Alta produtividade reduz tempo para entrega do projeto final e também reduz custos, isso olhando superficialmente, pois há mais vantagens no desenvolvimento produtivo, inclusive redução do estresse para o desenvolvedor.
Sei que muita gente odeia a MS, e até tem suas razões bem plausíveis, porém uma coisa deve ser dita: A MS é muito boa para fazer com que o desenvolvimento seja efetivamente mais produtivo, a cada facilidade que a MS lança eu realmente fico espantado e penso - Puxa, como isso vai me ajudar.
Eu já tinha estudado sobre Ajax e pensava ... Muito trabalho para pouco resultado. Aí conheci o Atlas, o "ajax facinho da Microsoft" e então pude realmente vislumbrar possibilidades reais de uso do ajax. Vou dar um exemplo de utilização do Atlas, pra não ficar só no blablabla.
Cenário : Aplicação web com uma caixa de texto com a função de autocompletar que busca dados em uma base SqlServer.
Pré-requisitos:- Conhecimentos básicos em asp.net / C#.
ps.: Fiz no VS2005, mas se você não tiver, pode se virar com as versões express da MS (sim, a gigante fornece soluções free tb) cujos links são:
Visual Web Developer 2005SqlServer Express 2005Modo de usar:Após instalar o Atlas você terá mais uma opção disponível na criação de um web site no Visual Studio, a opção "Atlas" Web Site. Essa opção é a que deve ser escolhida, pois assim a dll será automaticamente criada na pasta Bin do web site e também o web config terá algumas linhas adicionais.
Após criado o website abra o design da página default e adicione um textbox. Esse textbox é que ganhará a funcionalidade do autocompletar. Para utilizar o AutoCompleteExtender,que é quem dá a funcionalidade ao textbox também é necessário um scriptmanager, que pode ser inserido diretamente na página aspx com a seguinte tag:
<atlas:ScriptManager ID="scriptManager" EnablePartialRendering="true" runat="server" / >
Agora vamos inserir o AutoCompleteExtender propriamente dito, direto ná página aspx tb:
<atlas:AutoCompleteExtender ID="Auto01" runat="server" > <atlas:AutoCompleteProperties Enabled="True" ServiceMethod="Getcli" ServicePath="WebserviceCli.asmx" TargetControlID="BuscaNome" / >
</atlas:AutoCompleteExtender >
Foi rápido demais essa tag né, mas vou explicar. O autocompleteextender por baixo dos panos vai acessar um webservice, onde estará o código que consulta a base de dados e retorna as ocorrências coerentes com o que foi passado como parâmetro (o texto do textbox), no nosso caso, é o retorno de um comando SQL. Vamos as propriedades apresentadas: ServiceMethod é o nome do método no webservice que vai ser chamado, ServicePath é o endereço do webservice e targetcontrolid é o nome do controle que "alimentará os parâmetros". Entendido essa parte vamos a próxima, o webservice!
No solution explorer clique com o direito sobre o website e selecione Add New Item, então selecione WebService, mude o nome para WebServiceCli.asmx. Abra a página de código do webservice. Vamos de control c control v um pouquinho hehehe.
public class WebServiceCli : System.Web.Services.WebService
{
public WebServiceCli()
{
}
[WebMethod]
public string[] GetCli(string prefixText, int count)
{
List
results = new List(); SqlConnection conn = new SqlConnection("Data Source=USER-\\SQLEXPRESS;Initial Catalog=PRJGER;Integrated Security=True"); SqlCommand com = new SqlCommand("SELECT RazaoSocial FROM dbo.Cliente WHERE (RazaoSocial LIKE @RazSoc + '%') ORDER BY RazaoSocial", conn);
conn.Open(); try
{
com.Parameters.Add("RazSoc", SqlDbType.VarChar, 30);
com.Parameters["RazSoc"].Value = prefixText.ToString();
SqlDataReader cli = com.ExecuteReader();
try
{
while (cli.Read()) results.Add(cli["RazaoSocial"].ToString());
}
finally { cli.Close(); }
} finally { conn.Close(); }
return results.ToArray();
}}
Acredito que o código acima é bem auto-explicativo, peguei o prefixtext(o que está sendo digitado lá no textbox) que vem como parâmetro e usei para montar minha instrução SQL. Agora escrevendo que percebi um detalhe para se consertar, deve ser feito um filtro no prefixtext antes de passar para o sql, pois como não há postback pode vir algo "malicioso" travestido ali que não passaria pela verificação do .net como ocorre quando há postback.
Vale lembrar que a connectionstring bem como a instrução sql deve ser adaptada a sua realidade, e também que o webservice dessa forma como está, pode ser acessado publicamente.
Esse foi meu primeiro post, espero que seja útil a alguém, vou passar agora alguns links que podem clarear algumas idéias que não estejam bem definidas.
O AutoCompleteExtender não caiu do céu no meu colo, já usava Atlas mas não o conhecia, descobri através de um artigo em português:Linha de Código
Se precisar de mais funcionalidade do que o ACE prove para o mesmo objetivo, muito provavelmente estes artigos te servirão:
Infinites Loop
Webswapp
Ainda não está convencido sobre o quanto o Atlas pode te ajudar ? De uma olhada nesses exemplos de componentes :-)Atlas Control Toolkit