<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2365671657098001496</id><updated>2011-07-30T14:57:51.643-07:00</updated><category term='Focus Postback C# Asp.Net Scroll MaintainScrollPositionOnPostback'/><category term='AJAX'/><title type='text'>Utilidades para Desenvolvimento Web</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Alexandre Felipe Malavasi Cardoso</name><uri>http://www.blogger.com/profile/13197038463837198917</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cCnzDbNx6q8/SsgAY7DyfHI/AAAAAAAAAAk/8ijtnpPgtF0/S220/alexandre.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2365671657098001496.post-2708475248899564610</id><published>2010-08-29T12:39:00.000-07:00</published><updated>2010-08-29T12:42:04.158-07:00</updated><title type='text'>Títulos de Livros</title><content type='html'>Conforme sugestão dada nos comentários do último post, escrevo este sobre os livros que estou lendo, relacionados a temas diferentes, na área de Desenvolvimento de Sistemas(ou não..rs), que podem ser úteis a mais gente.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Usabilidade na Web - Jakob Nielsen&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Fica cada vez mais nítido pra mim, pelas minhas próprias experiências e as de profissionais que trabalham diretamente comigo que PROGRAMADOR não é DESIGNER e DESIGNER não é PROGRAMADOR. &lt;br /&gt;&lt;br /&gt;Eu sinto dificuldades em desenvolver a chamada camada View(para quem utiliza o padrão MVC) ou a camada de apresentação(PL) pra quem utiliza a arquitetura em camadas tradicional. &lt;br /&gt;&lt;br /&gt;Muitas vezes trabalhamos em uma empresa que não possui todos os membros recomendáveis para o desenvolvimento de sistemas, o que acarreta no acúmulo de funções. Sou analista programador e não temos um Web Designer na empresa. Acabo tendo que desempenhar este papel muitas vezes, motivo pelo qual tenho estudado conceitos de Usabilidade e Acessibilidade.&lt;br /&gt;&lt;br /&gt;Recomendo o livro Usabilidade na Web, de Jakob Nielsen, considerado o papa na área de Usabilidade desde o ano 2000 até os dias atuais. É um dos maiores defensores da usabilidade, não somente em Websites, mas também em sistemas. Recomendo a leitura. Comprei, li e recomendo. Sugiro também outros dois que&amp;nbsp;tenho:&lt;strong&gt; NÃO ME FAÇA PENSAR - de Steve Krug,&amp;nbsp; &lt;/strong&gt;livro que defende o conceito de simplicidade ao desenvolver interfaces e &lt;strong&gt;Webdesign - Teoria &amp;amp; Prática&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Eu acho ótimos os recursos AJAX "prontos" que o Asp.Net nos proporciona, mas sempre gostei de estudar a fundo conceitos de AJAX, porque pra mim não basta usar um componente. Sempre tento entender o que ele faz. Por esta razão, comecei a estudar um pouco mais a fundo AJAX e adquiri e estou lendo os seguintes livros:&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;&lt;strong&gt; Padrões de Projetos AJAX&lt;/strong&gt;&amp;nbsp; - Michael Mahemoff&lt;br /&gt;- &lt;strong&gt;Use a Cabeça - Ajax Profissional&lt;/strong&gt;(conteúdo de nível básico)&lt;br /&gt;&lt;br /&gt;Recomendo estes livros. Pra quem não tem nenhum conhecimento dos conceitos de Ajax eu recomendo o segundo. Pra quem já tem certa familiaridade, recomendo o primeiro.&lt;br /&gt;&lt;br /&gt;Os outros livros que estou lendo atualmente são:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UML - Guia do Usuário (dos criadores da UML)&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Teste e Análise de Software - processos princípios e técnicas&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Dominando o Desenvolvimento no Iphone&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Estes, citados neste post, são os que eu adquiri recentemente e atualmente estou lendo. Recomendo todos eles. Têm sido de grande ajuda e espero que sejam a mais gente.&lt;br /&gt;&lt;br /&gt;Grande abraço a todos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2365671657098001496-2708475248899564610?l=utilidadesparadesenvolvimentoweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/feeds/2708475248899564610/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/08/titulos-de-livros.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/2708475248899564610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/2708475248899564610'/><link rel='alternate' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/08/titulos-de-livros.html' title='Títulos de Livros'/><author><name>Alexandre Felipe Malavasi Cardoso</name><uri>http://www.blogger.com/profile/13197038463837198917</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cCnzDbNx6q8/SsgAY7DyfHI/AAAAAAAAAAk/8ijtnpPgtF0/S220/alexandre.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2365671657098001496.post-965461689209787030</id><published>2010-08-25T05:46:00.000-07:00</published><updated>2010-08-25T05:46:18.717-07:00</updated><title type='text'>Sempre dá pra melhorar</title><content type='html'>Uma das coisas que tenho percebido neste tempo em que estou trabalhando com desenvolvimento de Sistemas é que sempre, sempre mesmo, dá pra melhorar. &lt;br /&gt;&lt;br /&gt;Tenho aprendido todos os dias coisas novas, coisas que têm me ajudado a encarar os desafios de se desenvolver coisas novas e diferentes todos os dias.&lt;br /&gt;&lt;br /&gt;Nunca é de mais ler (e reler) livros sobre programação e/ou Análise de Sistemas.&lt;br /&gt;&lt;br /&gt;Nos últimos três meses mais ou menos estou comprando pelo menos um livro por semana, porque a vontade de aprender pede. E, quanto mais estudo, mais dá vontade de estudar. E quanto mais leio mais percebo falhas ou erros de arquitetura nos sistemas que desenvolvi ou que estão em desenvolvimento. Percebo que poderia ter feito de forma diferente ou que, fazendo da forma que fiz, dificulta-se manutenção ou outro fator. Ao mesmo tempo que descubro deficiências e falhas no passado, vejo evolução no presente. Não me incomodo do passado, mas me gratifico com o presente e espero poder sempre melhorar.&lt;br /&gt;&lt;br /&gt;Tenho aplicado Refactoring quase todos os dias e todos os dias consigo melhorar algo no código, torná-lo mais legível, mais robusto, mais simples, porque, como diz uma frase que li: "Não tem que ser difícil". E não tem mesmo. Tem que ser simples, fácil e eficiente. Digo com relação ao código-fonte dos sistemas. É melhor pra todo mundo. Considero lamentável a atitude de aumentar a complexidade de algo desnecessariamente só pra que haja "necessidade" do seu trabalho. Não fique amarrado em um projeto, parta pra outros, olhe pra frente.&lt;br /&gt;&lt;br /&gt;Estou estudando simultaneamente conceitos de SOA,SCRUM,XP,Padrões de Projetos Ajax, Usabilidade e acessibilidade, Técnicas de Refactoring, UML, JavaScript, CSS, HTML, c#, Iron Ruby e por aí vai.&lt;br /&gt;&lt;br /&gt;Nenhum&amp;nbsp;desses assuntos ou temas estão sendo abordados em alguma disciplina da faculdade e&amp;nbsp;muitas delas não são exigência&amp;nbsp;atual na função que exerço hoje, mas APRENDER É BOM.&lt;br /&gt;&lt;br /&gt;Programador que não gosta de ler ou estudar está na profissão errada, porque todo dia tem que aprender.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Me desculpem por não ser um post técnico. Como diriam os membros de algumas comunidades. É OFF-TOPIC. &lt;br /&gt;&lt;br /&gt;Abraços&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2365671657098001496-965461689209787030?l=utilidadesparadesenvolvimentoweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/feeds/965461689209787030/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/08/sempre-da-pra-melhorar.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/965461689209787030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/965461689209787030'/><link rel='alternate' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/08/sempre-da-pra-melhorar.html' title='Sempre dá pra melhorar'/><author><name>Alexandre Felipe Malavasi Cardoso</name><uri>http://www.blogger.com/profile/13197038463837198917</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cCnzDbNx6q8/SsgAY7DyfHI/AAAAAAAAAAk/8ijtnpPgtF0/S220/alexandre.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2365671657098001496.post-8552076339532362066</id><published>2010-07-26T05:13:00.000-07:00</published><updated>2010-07-26T05:13:07.727-07:00</updated><title type='text'>DLLs - Projeto</title><content type='html'>Olá pessoal, tudo bem?&lt;br /&gt;&lt;br /&gt;Devido a muitos casos vivenciados recentemente, escrevo este post sobre a boa prática de se referenciar apenas arquivos .DLL que estejam realmente no projeto ou o componham.&lt;br /&gt;&lt;br /&gt;No desenvolvimento de muitas aplicações temos a necessidade de referenciar no projeto bibliotecas que não são nativas do Asp.Net(independente da versão). Por exemplo, ao desenvolver um sistema de interface com Banco de Dados Oracle, necessitamos das bibliotecas específicas que possibilitarão trabalhar com este banco e seu driver próprio. Para isto fazemos uso da bliblioteca System.Data.OracleClient. Perceba que o nome é semelhante aos de outros BD(SqlCliente, MySqlCliente...etc). Haja vista que não é uma biblioteca que muitas vezes já vem com o Framework precimamos fazer referência a ela, na Solution através de:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://haacked.com/images/haacked_com/WindowsLiveWriter/UsingAntiXssAsTheDefaultEncoderForAS.NET_75E3/add-reference_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="275" src="http://haacked.com/images/haacked_com/WindowsLiveWriter/UsingAntiXssAsTheDefaultEncoderForAS.NET_75E3/add-reference_3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Fazendo a referência a uma DLL que está contida em algum diretório da nossa máquina local, conseguimos trabalhar com a mesma.&lt;br /&gt;&lt;br /&gt;Porém, algumas vezes, ao subirmos a aplicação para o ambiente de produção, algumas coisas e recursos não funcionam, e muitas vezes a causa é a inexistência de determinada DLL ou recurso no ambiente de servidor.&lt;br /&gt;&lt;br /&gt;Qual a solução pra isso? Referenciar apenas arquivos que façam parte da Solution. Antes de referenciar determinada DLL, faça uma cópia para alguma pasta própria do projeto.&lt;br /&gt;&lt;br /&gt;Em caso de DDLs ou classes, por padrão, é adicionado na pasta App_Code:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.codeproject.com/KB/aspnet/AspNetAppFolder/beginn2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="294" src="http://www.codeproject.com/KB/aspnet/AspNetAppFolder/beginn2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Espera que seja útil para inciantes em Asp.Net.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Grande abraço a todos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2365671657098001496-8552076339532362066?l=utilidadesparadesenvolvimentoweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/feeds/8552076339532362066/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/07/dlls-projeto.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/8552076339532362066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/8552076339532362066'/><link rel='alternate' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/07/dlls-projeto.html' title='DLLs - Projeto'/><author><name>Alexandre Felipe Malavasi Cardoso</name><uri>http://www.blogger.com/profile/13197038463837198917</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cCnzDbNx6q8/SsgAY7DyfHI/AAAAAAAAAAk/8ijtnpPgtF0/S220/alexandre.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2365671657098001496.post-1242559726625347038</id><published>2010-07-25T13:35:00.000-07:00</published><updated>2010-07-25T13:38:51.872-07:00</updated><title type='text'>Informações Centralizadas - Web.Config</title><content type='html'>Oi galera, tudo certo?&lt;br /&gt;&lt;br /&gt;Este post é sobre a utilização do Web.Config do Asp.Net &amp;nbsp;para especificar valores que serão "enxergados" por toda a aplicação.&lt;br /&gt;&lt;br /&gt;Sei que é um assunto saturado pra muitos, mas fiz este post &amp;nbsp;porque tenho feito manutenção em alguns sistemas em Asp.Net com C# e&amp;nbsp; percebido que há informações perdidas na aplicação, como referência à strings de conexão com o banco(à mesma&amp;nbsp;string), mas sempre declaradas. Se há&amp;nbsp;mudança de senha ou usuário de banco, se faz necessária a&amp;nbsp;mudança em muitos arquivos, o que não é considerado uma boa prática.&lt;br /&gt;&lt;br /&gt;Tenho percebido esta falha ou má prática&amp;nbsp;principalmente em programadores que estão iniciando em&amp;nbsp;programação ou eram de outras linguagens&amp;nbsp;Web e estão indo para o Asp.Net.&lt;br /&gt;&lt;br /&gt;Vamos a um exemplo simples:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SqlConnection conexao = new SqlConnection(&lt;span style="color: #cc0000;"&gt;"Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;string sql = "SELECT * FROM minhaTabela";&lt;br /&gt;conexao.Open();&lt;br /&gt;SqlCommand cmd = new SqlCommand(sql, conexao);&lt;br /&gt;&lt;br /&gt;SqlDataReader dr = cmd.ExecuteReader();&lt;br /&gt;&lt;br /&gt;conexao.Close();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Vejo a declaração à string destacada em vermelho em muitos arquivos .cs de aplicações. Se é necessário alterar esta string, é necessário mudar em todos os arquivos, sendo que a mesma string poderia ser especificada uma única vez, no Web.Config e chamada toda vez que se necessitasse.&lt;br /&gt;&lt;br /&gt;No Web.Config existe a seção &amp;lt;connectionStrings&amp;gt;&amp;nbsp;, própria para se especificar strings de conexão. Mas, neste exemplo específico não vou utilizá-la, porque o objetivo&amp;nbsp;&amp;nbsp;não é &amp;nbsp;incentivar a centralização somente de strings de conexão, mas de qualquer coisa que seja utilizada em toda aplicação.&lt;br /&gt;&lt;br /&gt;No Web.Config existe&amp;nbsp;a seção &amp;lt;appSettings&amp;gt;na qual podemos especificar chaves com seus respectivos valores, como abaixo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;strong&gt;Web.Config&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;appSettings&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;add key="StringConexao" value="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/appSettings&amp;gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;Toda vez que precisarmos fazer referência à string de conexão, não declararemos&amp;nbsp;&amp;nbsp;uma nova string, mas referenciaremos a chave "StringConexao" que está no Web.Config, em AppSettins, como abaixo:. &lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;&lt;span style="color: blue;"&gt;C# &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;SqlConnection conexao = new SqlConnection(&lt;span style="color: #cc0000;"&gt;System.Configuration.ConfigurationManager.AppSettings.Get("StringConexao").ToString()&lt;/span&gt;); &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;conexao.Open();&lt;br /&gt;string sql = "SELECT * FROM minhaTabela";&lt;br /&gt;SqlCommand cmd = new SqlCommand(sql, conexao);&lt;br /&gt;&lt;br /&gt;SqlDataReader dr = cmd.ExecuteReader();&lt;br /&gt;&lt;br /&gt;conexao.Close(); &lt;br /&gt;&amp;nbsp; &lt;br /&gt;Perceba que a string especificada foi o valor contido na chave "StringConexao" do Web.Config. &lt;br /&gt;&amp;nbsp; &lt;br /&gt;Quer mudar a string de conexão agora? Muda apenas no Web.Config ;). Uma única vez :) &lt;br /&gt;&amp;nbsp; &lt;br /&gt;Espero que seja útil de alguma forma aos que estejam bem no início da sua caminhada em Asp.Net com C#. &lt;br /&gt;&amp;nbsp; &lt;br /&gt;Abraços a todos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2365671657098001496-1242559726625347038?l=utilidadesparadesenvolvimentoweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/feeds/1242559726625347038/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/07/informacoes-centralizadas-webconfig.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/1242559726625347038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/1242559726625347038'/><link rel='alternate' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/07/informacoes-centralizadas-webconfig.html' title='Informações Centralizadas - Web.Config'/><author><name>Alexandre Felipe Malavasi Cardoso</name><uri>http://www.blogger.com/profile/13197038463837198917</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cCnzDbNx6q8/SsgAY7DyfHI/AAAAAAAAAAk/8ijtnpPgtF0/S220/alexandre.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2365671657098001496.post-5882547919141768504</id><published>2010-05-01T18:49:00.000-07:00</published><updated>2010-05-01T18:56:01.227-07:00</updated><title type='text'>Controles de Navegação do Asp.Net</title><content type='html'>Olá pessoal&lt;br /&gt;&lt;br /&gt;O tema do TCC que estou fazendo na faculdade é Interface Homem-Máquina para Web, e o assunto diz respeito à usabilidade.&lt;br /&gt;&lt;br /&gt;Eu não consigo pensar em qualquer conceito de desenvolvimento para Web e não pensar imediatamente em Dot.Net e nos recursos de sua principal IDE: Visual Studio.&lt;br /&gt;&lt;br /&gt;Mesmo a Web sendo um meio de divulgação já&amp;nbsp;&amp;nbsp;totalmente consolidado, tendo milhões de sites já hospedados e a taxa de utilização semanal em horas da internet por usuário esteja aumentando gradativamente a cada ano, em todos os países, ainda existem muitos sites(e não são poucos) que perdem potenciais usuários e a fidelização dos mesmos por falta de obsrvância&amp;nbsp;às diretrizes universais de Usabilidade.&amp;nbsp;&amp;nbsp; E a &lt;strong&gt;Navegação&lt;/strong&gt; é uma delas.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Analisando os controles do Asp.Net da ToolBox à luz dos conceitos de Usabilidade, me ative aos controles da Aba Navigation da ToolBox, que são ótimos de trabalhar e objetos cuidadosamente criados e desenvolvidos por profissionais que sabiam o que estava fazendo quando os criaram, pois possuem as "regras" exatamente como se recomenda que tenham.&lt;br /&gt;&lt;br /&gt;Considero interessante utilizá-los, justamente por estas regras, haja vista que a maioria dos programadores e desenvolvedores da Web gostam de implementar estes recursos "manualmente".&lt;br /&gt;&lt;br /&gt;Vamos aos problemas de usabilidade e às alternativas que o Asp.Net nos dá para previní-los, minimizá-los e/ou corrigí-los.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A maioria das pessoas não se sente à vontade em alguns sites, pois se sentem "perdidas". Vão navegando, navegando até que, se perdem. Às vezes querem retornar a algum ponto(o que seria interessante para o site e para o usuário) e não conseguem, porque há falta de informação para o usuário de&amp;nbsp;onde o&amp;nbsp;mesmo se encontra dentro da sua aplicação. Portanto, se faz necessária a existência de alguma indicação que lhe mostre em que ponto&amp;nbsp; está situado, segundo a hierarquização proposta pelo desenvolvedor&amp;nbsp;ou mentor do site.&lt;br /&gt;&lt;br /&gt;Para isto têm-se os controles da Aba Navigation da Toolbox:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #cc0000;"&gt;&lt;strong&gt;Menu&lt;/strong&gt;&lt;/span&gt; Web Server Control&lt;br /&gt;&lt;span style="color: #cc0000;"&gt;&lt;strong&gt;SiteMapPath&lt;/strong&gt;&lt;/span&gt; Web Server Control&lt;br /&gt;&lt;span style="color: #cc0000;"&gt;&lt;strong&gt;Treeview&lt;/strong&gt;&lt;/span&gt; Web Server Control&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Todos utilizam menu, então não há necessidade de explicar o que é. Neste caso só queria ressaltar a facilidade de se trabalhar com Styles utilizando o controle nativo do Asp.Net ao invés de implementá-lo manualmente. Uma das principais dificuldades de programadores Web está na manipulação de códigos de front-end(HTML e CSS), justamente porque não constituem "programação". Gerar o resultado e comportamento esperado de algum elemento da página, muitas vezes, é algo penoso, seja pela diversidade de navegadores disponíveis, seja pelo&amp;nbsp; seu grau de personalização. E montar menus horizontais e verticais, com vários submeunus, num estilo aceitável é um belo exemplo disso. Então, utilizemos este controle Asp.Net, para ganharmos tempo. Considero uma boa prática não "reiventar" a roda. Se já há pronto e atende às nossas necessidades, porque não utilizar?&lt;br /&gt;&lt;br /&gt;O &lt;strong&gt;SiteMapPah&lt;/strong&gt;&amp;nbsp; indica ao usuário aonde está na sua aplicação, lhe mostrando em que ponto se encontra na arquitetura da informação do site. É chamado por alguns de "caminho de migalhas de pão" pois permite que os usuários, mesmo depois de navegarem por muitas páginas, retornem ao ponto que quiserem, se sentindo seguros, tendo uma possiblidade maior de passar mais tempo dentro do seu site. &lt;br /&gt;&lt;br /&gt;Todos esses controles possuem características e propósitos semelhantes, podendo também ser manipulados praticamente da mesma forma, permiindo vincular o objeto a uma fonte de dados que indique como estão dispostos e divididos os links dentro da sua aplicação, seja a uma base de dados SQL, um arquivo XML ou outra fonte de dados.&lt;br /&gt;&lt;br /&gt;Acho bem interessante neste caso optar por XML, pois pode ser melhor validado e por este motivo(na minha opinão) atende melhor a proposta.&lt;br /&gt;&lt;br /&gt;Caros, não vou, neste post, dar demonstração da implementação, mas abaixo segue link muito útil que cumpre esta finalidade:&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/c4hb2k3a.aspx"&gt; Navigation ToolBox Controls&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Grande abraço a todos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2365671657098001496-5882547919141768504?l=utilidadesparadesenvolvimentoweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/feeds/5882547919141768504/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/05/controles-de-navegacao-do-aspnet.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/5882547919141768504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/5882547919141768504'/><link rel='alternate' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/05/controles-de-navegacao-do-aspnet.html' title='Controles de Navegação do Asp.Net'/><author><name>Alexandre Felipe Malavasi Cardoso</name><uri>http://www.blogger.com/profile/13197038463837198917</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cCnzDbNx6q8/SsgAY7DyfHI/AAAAAAAAAAk/8ijtnpPgtF0/S220/alexandre.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2365671657098001496.post-4946596668646711965</id><published>2010-03-24T06:55:00.000-07:00</published><updated>2010-03-24T07:04:11.082-07:00</updated><title type='text'>Controles ASP.Net</title><content type='html'>Olá pessoal,&lt;br /&gt;&lt;br /&gt;uma das propostas da Microsoft com a Plataforma .Net, juntamente com a IDE Visual Studio(independente da versão) é fazer com que o desenvolvimento para Web fosse parecido ao Desktop. Com esta proposta, desenvolvedores acostumados com linguagens compiladas/desktop como Delphi e Vb, conseguem desenvolver para Web sem problemas com C# ou VB.Net. O tempo de adaptação é rápido, porque a programação da camada de visão é em ambiente visual(arrasntando controles à tela/formulário) e o conceito de Orientação a Objeto totalmente incorporado, bem como Orientação a Eventos.&lt;br /&gt;&lt;br /&gt;Uma grande facilidade que a Plataforma.Net proporcionou também é a facilidade de se trabalhar com layout, pois não há tanta necessidade de se programar "na mão" o HTML das páginas, ganhando em tempo e eficiência na elaboração de projetos. A IDE permite que o desenvolvedor se preocupe mais com as regras de negócio e modelagem que qualquer outra coisa, não se gastando tanto tempo com codificação.&lt;br /&gt;&lt;br /&gt;Abaixo segue a correposdência de alguns controles Asp.Net com tags tradicionais do HTML.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;Label &lt;/span&gt;&lt;/b&gt;- div ou span&lt;br /&gt;&lt;b style="color: red;"&gt;TextBox &lt;/b&gt;- input text&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;Buttom &lt;/span&gt;&lt;/b&gt;- input submit&lt;br /&gt;&lt;b style="color: red;"&gt;LinkButton &lt;/b&gt;- href com funções javascript associadas&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;HyperLink &lt;/span&gt;&lt;/b&gt;- href(link tradicional)&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;DropDownList &lt;/span&gt;&lt;/b&gt;- select com seus options&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;ListBox &lt;/span&gt;&lt;/b&gt;- select com múltiplas seleções&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;CheckBox &lt;/span&gt;&lt;/b&gt;- input checkbox&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;CheckBoxList &lt;/span&gt;&lt;/b&gt;- Coleção de checkbox&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;RadioButton &lt;/span&gt;&lt;/b&gt;- input radio&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;RadioButtonList &lt;/span&gt;&lt;/b&gt;- coleção de inputs do tipo radio&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;Image &lt;/span&gt;&lt;/b&gt;- tag img&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;ImageMap &lt;/span&gt;&lt;/b&gt;- Imagem mapeada(links através de coordenadas)&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;Table &lt;/span&gt;&lt;/b&gt;- tag table&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;HiddenField &lt;/span&gt;&lt;/b&gt;- input hidden&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;FileUpload &lt;/span&gt;&lt;/b&gt;- input file&lt;br /&gt;&lt;br /&gt;Acima estão apenas alguns controles, os mais básicos. Todos estes controles do Asp.Net têm algo em comum: possuem o atributo RUNAT setado para SERVER. Quando se especifica este atributo com este valor, isto significa que há a intenção de acessar e manipular o controle com "Códigos de Servidor", ou seja, poderá acessar os controles utilizando linguagens de servidor como C#, VB.Net.&lt;br /&gt;&lt;br /&gt;Cada controle deste, a partir do momento que é criado, se torna um objeto de uma classe específica.&lt;br /&gt;Por exemplo:&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;&lt;span style="color: blue;"&gt; &amp;lt;asp:textbox id="MinhaTextBox" runat="server"&amp;gt;&amp;lt;/asp:textbox&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Acima temos um OBJETO chamado MinhaTextBox da CLASSE TextBox.&amp;nbsp; Notem o atributo RUNAT, sobre o qual falei.&lt;br /&gt;&lt;br /&gt;Haja vista que MinhaTextBox é um objeto, o mesmo possui atributos e pode ter eventos(métodos) associados.&lt;br /&gt;&lt;br /&gt;Abaixo estão listados alguns atributos/propriedades do Objeto típico da classe TextBox:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;Text &lt;/span&gt;&lt;/b&gt;- permite acessar o conteúdo/valor do controle&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;TextMode &lt;/span&gt;&lt;/b&gt;- permite especificar se o controle fará correspondência a um input text(single line) ou textarea(MultiLine)&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;MaxLenght &lt;/span&gt;&lt;/b&gt;- quantidade máxima de caracteres permitida&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;ReadOnly &lt;/span&gt;&lt;/b&gt;- Somente Leitura&lt;br /&gt;&lt;br /&gt;Estes são apenas cinco de MUITAS propriedades manipuláveis deste controle.&lt;br /&gt;Todos os controles possuem suas propriedades específicas e convenientes, sendo que as classes foram muito bem projetadas pela Microsoft, com um nível de detalhamento e recursos impressionante.&lt;br /&gt;&lt;br /&gt;Para quem não programa para Web, logo vê a semelhança de programação com Desktop. E quem antes programava na mão, entende um pouco da proposta do Asp.Net de tornar a programação Web mais&lt;br /&gt;amigável aos programadores que outrora programavam manualmente.&lt;br /&gt;&lt;br /&gt;Pra mim, umas das principais vantagens de se trabalhar com controles é a possibilidade de poder manipulá-los e trabalhar com eventos na página via servidor, sem a necessidade de frameworks complicados de implementação de AJAX e sem a necessidade de se trabalhar&amp;nbsp; tanto com JavaScript manualmente, ganhando tempo, com certeza e maior segurança, pela possibilidade de maior controle.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bom, fica aí um post simples, mas espero que seja esclarecedor pra muitos que estejam querendo migrar para Asp.Net ou começar a desenvolver para Web.&lt;br /&gt;&lt;br /&gt;Grande abraço a todos e até breve.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2365671657098001496-4946596668646711965?l=utilidadesparadesenvolvimentoweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/feeds/4946596668646711965/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/03/controles-aspnet.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/4946596668646711965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/4946596668646711965'/><link rel='alternate' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/03/controles-aspnet.html' title='Controles ASP.Net'/><author><name>Alexandre Felipe Malavasi Cardoso</name><uri>http://www.blogger.com/profile/13197038463837198917</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cCnzDbNx6q8/SsgAY7DyfHI/AAAAAAAAAAk/8ijtnpPgtF0/S220/alexandre.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2365671657098001496.post-6530021723059062109</id><published>2010-03-20T13:24:00.000-07:00</published><updated>2010-03-20T14:59:00.762-07:00</updated><title type='text'>Paginação PHP/Mysql - Exemplo</title><content type='html'>Este post sobre a implementação do recurso de paginação em php, proposto por um ilustre colega de faculdade que estava necessitando disto em PHP/Mysql.&lt;br /&gt;&lt;br /&gt;Quando, numa página web, precisamos exibir muitos registros resultantes de uma query, para melhor perfomance e estética se faz necessária a utilização de paginação. É uma prática comum e amplamente utilizada.&lt;br /&gt;&lt;br /&gt;Pra começar, criemos passo a passo o nosso arquivo PHP.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;include "include/php/conecta.php"; &lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;// Referência ao arquivo que abre conexão com o Mysql&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;// Banco utilizado no exemplo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;/&lt;span style="color: rgb(51, 204, 0);"&gt;/Variável que armazena a quantidade máxima de registros que desejamos exibir por&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;// página(índice)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;$TOTAL_REGISTROS_PAGINA = 10;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;//Verifica-se se o usuário está acessando o primeiro índice(primeiro resultado da query)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;$pagina_indice = $_GET["pagina_indice"];&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;//Verifica se possui a Querystring "pagina_indice"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;if (!$pagina_indice) {&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;// Se a ocorrência da querystring for falsa&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;$inicio = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;$pagina_indice=1; // Primeira paginação(índice)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;else { //caso não seja a "primeira" página&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;$inicio = ($pagina_indice - 1) * $TOTAL_REGISTROS_PAGINA;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;// O primeiro passo é verificar a quantidade de registros retornados pela query desejada&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;$sql = "select * from cliente ";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;$record_set = mysql_query($sql,$conn);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;$total_registros_retornados = mysql_num_rows($record_set);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;//Próximo passo é fazer o cálculo de quantas páginas será necessário gerar.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;$quantidade_paginas = ceil($total_registros_retornados / $TOTAL_REGISTROS_PAGINA);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;//Para mostrarmos o resultado das variáveis que setamos lá em cima, vamos fazer isso:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);" class="codigo"&gt;echo "&amp;lt;b&amp;gt;Número de registros retornados na busca :&amp;lt;/b&amp;gt; " . $quantidade_paginas . "&amp;lt;br&amp;gt;"; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;echo "&amp;lt;b&amp;gt;Total de registros por página: &amp;lt;/b&amp;gt;" . $TOTAL_REGISTROS_PAGINA . " registros &amp;lt;br&amp;gt; ";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;echo "&amp;lt;b&amp;gt;Estou mostrando a página " . $pagina_indice . " de " . $quantidade_paginas. "&lt;/span&gt;&lt;p style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;br&amp;gt;&amp;lt;/b&amp;gt;";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;//Próximo passo é buscar os dados no banco efetivamente&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;$sql ="select * from cliente  limit " . $inicio . ",". $TOTAL_REGISTROS_PAGINA;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;$record_set = mysql_query($sql);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;while ($linha = mysql_fetch_object($record_set)){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;echo $linha-&gt;nome . "&amp;lt;br&amp;gt;";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;//índices de paginação&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;if ($quantidade_paginas &gt; 1){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;for ($i=1;$i&lt;=$quantidade_paginas;$i++)&lt;/span&gt;&lt;/p&gt;&lt;p style="font-weight: bold; color: rgb(0, 0, 0);"&gt;{&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  if ($pagina_indice == $i)&lt;/span&gt;          &lt;span style="color: rgb(51, 204, 0);"&gt;//tira o link da página atual&lt;/span&gt;&lt;/p&gt;&lt;p style="font-weight: bold; color: rgb(255, 0, 0);"&gt;          &lt;span style="color: rgb(0, 0, 0);"&gt;echo $pagina_indice . " ";&lt;/span&gt;&lt;/p&gt;&lt;p style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;else &lt;/span&gt;         &lt;span style="color: rgb(51, 204, 0);"&gt;// se não for a página atual insere o link&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;span class="codigo"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;echo " &amp;lt;a href='paginacao.php?pagina_indice=" . $i . "' &amp;gt; " . $i . " &amp;lt;/a&amp;gt; "; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-weight: bold; color: rgb(0, 0, 0);"&gt;      }&lt;/p&gt;&lt;p style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold; color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;include "include/php/desconecta.php";&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;// referência ao arquivo que fecha conexão com bd&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;?&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Neste exemplo foi utilizada a busca numa tabela chamada cliente e se mostrou uma relação(dez por dez) de clientes, mostrando apenas seus nomes.&lt;br /&gt;&lt;br /&gt;Espero ter ajudado quem precisava disto. Qualquer problema com o script desenvolvido, sugestão, opinião ou consideração a fazer, por favor, postem comentários que respondo o mais rápido possível, pois esta é uma das propostas do blog.&lt;br /&gt;&lt;br /&gt;Um grande abraço a todos&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2365671657098001496-6530021723059062109?l=utilidadesparadesenvolvimentoweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/feeds/6530021723059062109/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/03/este-post-sobre-implementacao-do.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/6530021723059062109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/6530021723059062109'/><link rel='alternate' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/03/este-post-sobre-implementacao-do.html' title='Paginação PHP/Mysql - Exemplo'/><author><name>Alexandre Felipe Malavasi Cardoso</name><uri>http://www.blogger.com/profile/13197038463837198917</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cCnzDbNx6q8/SsgAY7DyfHI/AAAAAAAAAAk/8ijtnpPgtF0/S220/alexandre.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2365671657098001496.post-378879655714379494</id><published>2010-03-10T04:19:00.000-08:00</published><updated>2010-03-10T04:40:50.540-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Focus Postback C# Asp.Net Scroll MaintainScrollPositionOnPostback'/><title type='text'>Foco em PostBack - C#</title><content type='html'>Caros,&lt;br /&gt;&lt;br /&gt;como um dos objetivos deste blog é arquivar coisas que são úteis para desenvolvimento web e também, trocar conhecimento, fiz este post porque conheci um recurso do Asp.Net que não conhecia: a manutenção de foco em postback.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Como já é de conhecimento geral, as páginas aspx(que contém códigos html, controles do asp.net, javascript, css e podem incluir também códigos de script de servidor) possuem um arquivo .cs correspondente(para quem desenvolve Asp.Net com c#), através da qual podemos manipular os eventos da página, suas propriedades, controles, dentre outras coisas.&lt;br /&gt;&lt;br /&gt;Quando programamos o evento de um botão por exemplo, se este botão estiver no final da página, com scroll vertical, quando este botão é acionado, requisitando a função do servidor, o focus voltará para o início da página, pois haverá um "recarregamento" conhecido como PostBack, sendo que esta característica pode ser acessada da seguinte forma:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;this.IsPostBack&lt;/span&gt; . Esta propriedade da página possui valor boleano(true ou false).&lt;br /&gt;&lt;br /&gt;Toda vez que esta propriedade é "setada" para true, por algum evento ou algo acionado na página, a página perde o focus atual, voltando à sua posição inicial.&lt;br /&gt;&lt;br /&gt;Muitas vezes, desejamos que o Focus se mantenha, como por exemplo, quando estamos trabalhando com o componente Calendar, para preencher automaticamente um controle&lt;br /&gt;do tipo Text(por exemplo).  Se este campo texto e calendário estiverem no final da página com scroll, o Postback gerado pelo evento de seleção de data no calendário fará com que se gere um efeito indesejado para o usuário, que terá que retornar manualmente ao fim da página, o que é incômodo dependendo do altura da mesma.&lt;br /&gt;&lt;br /&gt;Como resolver este problema?&lt;br /&gt;&lt;br /&gt;É só setar a propriedade &lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;MaintainScrollPositionOnPostback&lt;/span&gt; da tag principal da página aspx para &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;true&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;%@ Page Language="C#" AutoEventWireup="true" &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;MaintainScrollPositionOnPostback="true" &lt;/span&gt; CodeFile="Default.aspx.cs" Inherits="_Default" %&gt;&lt;br /&gt;&lt;br /&gt;Esta propriedade eu não conhecia e resolveu muitos problemas meus nos últimos dias.&lt;br /&gt;&lt;br /&gt;Espero que seja útil a mais gente.&lt;br /&gt;&lt;br /&gt;Abraços a todos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2365671657098001496-378879655714379494?l=utilidadesparadesenvolvimentoweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/feeds/378879655714379494/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/03/foco-em-postback-c.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/378879655714379494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/378879655714379494'/><link rel='alternate' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/03/foco-em-postback-c.html' title='Foco em PostBack - C#'/><author><name>Alexandre Felipe Malavasi Cardoso</name><uri>http://www.blogger.com/profile/13197038463837198917</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cCnzDbNx6q8/SsgAY7DyfHI/AAAAAAAAAAk/8ijtnpPgtF0/S220/alexandre.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2365671657098001496.post-377944930765611296</id><published>2010-03-04T04:28:00.000-08:00</published><updated>2010-03-04T06:24:35.861-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>Ajax Básico</title><content type='html'>Desde quando desenvolvo para Web eu sempre utilizei  AJAX, principalmente o "embutido" na plataforma .Net(Microsoft), cujo framework absorveu de forma impressionante este conceito.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;AJAX &lt;/span&gt;não é uma linguagem de programação, um script, um componente, nem uma nova tecnologia.&lt;br /&gt;&lt;br /&gt;É simplesmente um conceito que se utiliza de tecnologias já existentes e conhecidas, de forma integrada: HTML, JavaScript e XML.&lt;br /&gt;&lt;br /&gt;Com qual linguagem Web eu posso trabalhar com Ajax? Qualquer uma:  php, Asp, Asp.Net, etc.&lt;br /&gt;A linguagem-servidor independe. O que importa é a "resposta" que a aplicação dá às requisições feitas via JavaScript.&lt;br /&gt;&lt;br /&gt;Para mostrar que Ajax é um conceito e não uma linguagem de programação e pode ser usado com qualquer linguagem(porque é apenas um conceito), vou fornecer um exemplo básico, somente utilizando HTML e JavaScript(sem code-behind).&lt;br /&gt;&lt;br /&gt;Basta copiar o código abaixo para um editor de texto, e salvar o arquivo com extensão html.&lt;br /&gt;Exemplo: index.html&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;index.html&lt;/span&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;function Exemplo(pagina,Div) {&lt;br /&gt; var ajaxObj;&lt;br /&gt;&lt;br /&gt; try {&lt;br /&gt;    // Firefox, Opera 8.0+, Safari...&lt;br /&gt;    ajaxObj=new XMLHttpRequest();&lt;br /&gt; } catch (e) {&lt;br /&gt;    // Internet Explorer&lt;br /&gt;    try {&lt;br /&gt;       ajaxObj=new ActiveXObject("Msxml2.XMLHTTP");&lt;br /&gt;    } catch (e) {&lt;br /&gt;       try {&lt;br /&gt;          ajaxObj=new ActiveXObject("Microsoft.XMLHTTP");&lt;br /&gt;       } catch (e) {&lt;br /&gt;          alert("Seu navegador não possui suporte ao AJAX!");&lt;br /&gt;          return false;&lt;br /&gt;       }&lt;br /&gt;    }&lt;br /&gt; }&lt;br /&gt; ajaxObj.onreadystatechange=function() {&lt;br /&gt;    if(ajaxObj.readyState==4) {&lt;br /&gt;       document.getElementById(Div).innerHTML=ajaxObj.responseText;&lt;br /&gt;    }&lt;br /&gt; }&lt;br /&gt; ajaxObj.open("GET",pagina,true);&lt;br /&gt; ajaxObj.send(null);&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;Exemplo Básico de AJAX&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;form name="exemplo"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;a href="#" onclick="Exemplo('pagina.html','Conteudo');" &amp;gt;&amp;lt;font color=blue&amp;gt;&amp;lt;b&amp;gt;Clique aqui para carregar o conteúdo!&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;div id="Conteudo"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;pagina.html&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;h3&amp;gt;Bem-vindo ao AJAX&amp;lt;/h3&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No código-fonte da index.html  foi criada uma função JavaScript chamada Exemplo, com dois parâmetros: pagina e div.&lt;br /&gt;&lt;br /&gt;Pagina é a url(no nosso exemplo, pagina.html) que será executada e que retornará "dados" para o chamador da função na index.html&lt;br /&gt;&lt;br /&gt;Div corresponde ao Id da div na qual gostaríamos que o conteúdo da página requisitada fosse exibido. No exemplo, a div Conteudo.&lt;br /&gt;&lt;br /&gt;Pagina.html contém todo o conteúdo que se quer exibir.&lt;br /&gt;&lt;br /&gt;Pronto!!!&lt;br /&gt;&lt;br /&gt;Ao clicar no link na index.html a div é "preenchida" com as informações de outra página(pagina.html). Percebam que houve essa modificação no conteúdo da página(index.html)&lt;br /&gt;sem o recarregamento da mesma.&lt;br /&gt;&lt;br /&gt;Bem-vindo ao AJAX!!!&lt;br /&gt;&lt;br /&gt;A partir desses conceitos básicos pode-se criar exemplos extremamente complexos, gerando&lt;br /&gt;soluções impressionantes.&lt;br /&gt;&lt;br /&gt;Não me ative neste post aos detalhes e objetos contidos na função Exemplo criada, porque não é intenção no momento de se aprofundar em alguns detalhes.&lt;br /&gt;&lt;br /&gt;Uma dica legal, para "brincar" um pouco, é criar páginas na linguagem que está familiarizado(php, asp, asp.net,etc...) que recebam parâmetros na url. Faça referência a esta página na chamada da função na index.html passando os parâmetros que desejar.&lt;br /&gt;&lt;br /&gt;Na página chamada você poderá abrir conexão e "puxar" dados de um Database qualquer, dentre muitas outras coisas.&lt;br /&gt;&lt;br /&gt;E tudo isso pode ser feito sem que o usuário que está acessando a index.html perceba, pois não há refresh de página.&lt;br /&gt;&lt;br /&gt;Bom, está aí um exemplo básico. Espero que seja útil a muitos que estão iniciando e espero ir aumentando a complexidade com todos, em todos os posts deste blog.&lt;br /&gt;&lt;br /&gt;Um grande abraço a todos!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2365671657098001496-377944930765611296?l=utilidadesparadesenvolvimentoweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/feeds/377944930765611296/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/03/ajax-basico.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/377944930765611296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/377944930765611296'/><link rel='alternate' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2010/03/ajax-basico.html' title='Ajax Básico'/><author><name>Alexandre Felipe Malavasi Cardoso</name><uri>http://www.blogger.com/profile/13197038463837198917</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cCnzDbNx6q8/SsgAY7DyfHI/AAAAAAAAAAk/8ijtnpPgtF0/S220/alexandre.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2365671657098001496.post-2407119650387249689</id><published>2009-12-24T11:14:00.000-08:00</published><updated>2009-12-25T05:16:46.521-08:00</updated><title type='text'>Apresentação</title><content type='html'>Este primeiro texto serve como apresentação do blog. Para dizer o que me proponho com ele, as expectativas que tenho e, também, conseguir sugestões e caminhos para que saiba como atualizá-lo de forma a ser realmente útil, não somente a mim mesmo, mas há tantos outros que necessitam tirar dúvidas sobre Desenvolvimento de Sistemas Web.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Estou na área de desenvolvimento há pouco tempo, se comparado a tantos outros que conheço da área. Mas, uma coisa que me espantou ao entrar na área de Programação, Análise e Desenvolvimento é a cooperação existente entre os profissionais desta área.  Talvez não haja outro ramo profissional ou área de conhecimento que possua tanto material e tutoriais disponíveis gratuitamente, principalmente na Internet.  Os fóruns são de muita qualidade, bem como as comunidades relacionadas.&lt;br /&gt;&lt;br /&gt;Este blog é uma forma de agradecer e retribuir a todos que me ensinam todos os dias, há um certo tempo, sobre a área que eu escolhi seguir e fazer carreira. Tudo que eu já aprendi até hoje eu devo à pessoas nos ambientes profissional, acadêmico e pessoal que sempre estiveram dispostos não apenas a me ensinar e tirar dúvidas, mas também a me incentivar a crescer cada vez mais em conhecimento.&lt;br /&gt;&lt;br /&gt;Meu lema profissional é: "Se alguém fez, então dá pra fazer". Basta sempre apenas muito estudo e pesquisa.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Quem tiver interesse por artigos sobre qualquer tema relacionado à área, por favor, poste um comentário especificando o mesmo. Se eu não souber pesquisarei e aprenderei com todos. Se souber, aprenderei com vocês do mesmo modo. Porque este é o meu objetivo principal: aprender e arquivar coisas que são úteis todos os dias.&lt;br /&gt;&lt;br /&gt;Um grande abraço a todos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Alexandre Malavasi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2365671657098001496-2407119650387249689?l=utilidadesparadesenvolvimentoweb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/feeds/2407119650387249689/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2009/12/apresentacao.html#comment-form' title='35 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/2407119650387249689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2365671657098001496/posts/default/2407119650387249689'/><link rel='alternate' type='text/html' href='http://utilidadesparadesenvolvimentoweb.blogspot.com/2009/12/apresentacao.html' title='Apresentação'/><author><name>Alexandre Felipe Malavasi Cardoso</name><uri>http://www.blogger.com/profile/13197038463837198917</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_cCnzDbNx6q8/SsgAY7DyfHI/AAAAAAAAAAk/8ijtnpPgtF0/S220/alexandre.jpg'/></author><thr:total>35</thr:total></entry></feed>
