<?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-1432151093700815380</id><updated>2011-12-05T14:22:48.199-02:00</updated><category term='c#'/><category term='jquery'/><category term='ShowMessage ASP.NET'/><category term='customizado'/><category term='Custom ShowMessage ASP.NET'/><category term='ShowMessage'/><category term='GridView'/><category term='ShowMessage Customizado ASP.NET'/><category term='Custom ShowMessage'/><category term='app_offline.htm'/><category term='asp.net'/><category term='ShowMessage Customizado'/><category term='app_offline.htm customizado'/><category term='json'/><category term='pager personalizado'/><title type='text'>Murilo Machado</title><subtitle type='html'>Blog sobre o cotidiano de um programador .NET</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://murilomachado.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432151093700815380/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://murilomachado.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mrl</name><uri>http://www.blogger.com/profile/05933161007692815046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-B0UBdtBxWAE/TjFTPQ-8gKI/AAAAAAAAACw/UAI4OM6-dpw/s220/20101210122559_MrL_C1TRYSA36JLFZP59DNVMWK8B4GOX07HIUE2Q.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1432151093700815380.post-6888899358648818785</id><published>2011-10-24T16:24:00.000-02:00</published><updated>2011-10-24T16:24:08.517-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='GridView'/><category scheme='http://www.blogger.com/atom/ns#' term='pager personalizado'/><title type='text'>Criando um pager personalizado no GridView ASP.NET</title><content type='html'>Olá pessoal, hoje vou ensinar como fazer um pager personalizado no GridView do ASP.NET.&lt;br /&gt;&lt;br /&gt;Nosso pager será composto de First, Prev, Numeric, Next, Last.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Vamos lá.&lt;br /&gt;&lt;br /&gt;Para modificar o Default do pager do Grid sobrecarregue o método RowCreate do GridView e compare se o RowType é igual a "Pager", da seguinte maneira: &lt;code&gt;if (e.Row.RowType == DataControlRowType.Pager)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Após isso vamos ao código, vou colar ele todo aqui pois está comentado.&lt;br /&gt;É bem simples, e o segredo está em realizar um RowCommand para o próprio GridView com o CommandName de &lt;code&gt;Page&lt;/code&gt; e o CommandArgument que muda conforme o botão.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;if (e.Row.RowType == DataControlRowType.Pager)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;   &amp;nbsp;//Pega a célula do pager (é uma celula com colspan automatico do tamanho do grid)&lt;br /&gt;&amp;nbsp;   &amp;nbsp;TableCell c = e.Row.Cells[0];&lt;br /&gt;&amp;nbsp;   &amp;nbsp;//Limpa o que tem no Pager&lt;br /&gt;&amp;nbsp;   &amp;nbsp;c.Controls.Clear();&lt;br /&gt;&amp;nbsp;   &amp;nbsp;//Centraliza o Pager novo&lt;br /&gt;&amp;nbsp;   &amp;nbsp;c.Style.Add(HtmlTextWriterStyle.TextAlign, "center");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;   &amp;nbsp;//Cria uma tabela para ser o nosso novo pager&lt;br /&gt;&amp;nbsp;   &amp;nbsp;Table tab = new Table();&lt;br /&gt;&amp;nbsp;   &amp;nbsp;//Fix para centralizar a tabela&lt;br /&gt;&amp;nbsp;   &amp;nbsp;tab.Style.Add("margin", "auto");&lt;br /&gt;&amp;nbsp;   &amp;nbsp;//Cria a linha do pager&lt;br /&gt;&amp;nbsp;   &amp;nbsp;TableRow pager = new TableRow();&lt;br /&gt;&amp;nbsp;   &amp;nbsp;//Cria as celulas que vão conter os botões&lt;br /&gt;&amp;nbsp;   &amp;nbsp;TableCell cFirst = new TableCell();&lt;br /&gt;&amp;nbsp;   &amp;nbsp;TableCell cPrev = new TableCell();&lt;br /&gt;&amp;nbsp;   &amp;nbsp;TableCell cNext = new TableCell();&lt;br /&gt;&amp;nbsp;   &amp;nbsp;TableCell cLast = new TableCell();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;   &amp;nbsp;//Cria os botões&lt;br /&gt;&amp;nbsp;   &amp;nbsp;ImageButton first = new ImageButton();&lt;br /&gt;&amp;nbsp;   &amp;nbsp;first.ImageUrl = grvDatas.PagerSettings.FirstPageImageUrl;&lt;br /&gt;&amp;nbsp;   &amp;nbsp;first.BorderWidth = 0;&lt;br /&gt;&amp;nbsp;   &amp;nbsp;first.CommandName = "Page";&lt;br /&gt;&amp;nbsp;   &amp;nbsp;first.CommandArgument = "First";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;   &amp;nbsp;cFirst.Controls.Add(first);&lt;br /&gt;    &lt;br /&gt;&amp;nbsp;   &amp;nbsp;ImageButton prev = new ImageButton();&lt;br /&gt;&amp;nbsp;   &amp;nbsp;prev.ImageUrl = grvDatas.PagerSettings.PreviousPageImageUrl;&lt;br /&gt;&amp;nbsp;   &amp;nbsp;prev.BorderWidth = 0;&lt;br /&gt;&amp;nbsp;   &amp;nbsp;prev.CommandName = "Page";&lt;br /&gt;&amp;nbsp;   &amp;nbsp;prev.CommandArgument = "Prev";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;   &amp;nbsp;cPrev.Controls.Add(prev);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;   &amp;nbsp;pager.Cells.Add(cFirst);&lt;br /&gt;&amp;nbsp;   &amp;nbsp;pager.Cells.Add(cPrev);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;   &amp;nbsp;//Variavel de controle da paginação&lt;br /&gt;&amp;nbsp;   &amp;nbsp;//A variavel PageAux, voce deve definir fora do escopo, e setar = 0 no PageLoad dentro de &amp;nbsp;um if(!IsPostBack)&lt;br /&gt;&amp;nbsp;   &amp;nbsp;int paginacao = grvDatas.PagerSettings.PageButtonCount * PageAux;&lt;br /&gt;&amp;nbsp;   &amp;nbsp;//Variavel da quantidede de paginas que terão no grid&lt;br /&gt;&amp;nbsp;   &amp;nbsp;int qtd_paginas = Convert.ToInt32(decimal.Floor(decimal.Divide(grvDatas.PageCount, &amp;nbsp;grvDatas.PagerSettings.PageButtonCount)) + 1);&lt;br /&gt;    &lt;br /&gt;&amp;nbsp;   &amp;nbsp;//Loop para ajustar a página do pager&lt;br /&gt;&amp;nbsp;   &amp;nbsp;for (int k = 0; k &amp;lt; qtd_paginas; k++)&lt;br /&gt;&amp;nbsp;   &amp;nbsp;{&lt;br /&gt;&amp;nbsp;       &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;if (paginacao &amp;gt; grvDatas.PageIndex)&lt;br /&gt;&amp;nbsp;       &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;br /&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;PageAux = PageAux - 1;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;paginacao = grvDatas.PagerSettings.PageButtonCount * PageAux;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;else if ((paginacao + grvDatas.PagerSettings.PageButtonCount - 1) &amp;lt; grvDatas.PageIndex)&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;PageAux = PageAux + 1;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;paginacao = grvDatas.PagerSettings.PageButtonCount * PageAux;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;br /&gt;    &lt;br /&gt;&amp;nbsp;   &amp;nbsp;//Adiciona o ... Antes dos números&lt;br /&gt;&amp;nbsp;   &amp;nbsp;if (paginacao &amp;gt; 0)&lt;br /&gt;&amp;nbsp;   &amp;nbsp;{&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;TableCell cNum = new TableCell();&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add("border", "solid 1px #000");&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.VerticalAlign, "middle");&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.BackgroundColor, "#EEE");&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.FontSize, "12px");&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.Width, "25px;");&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.Height, "25px;");&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.TextDecoration, "none");&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.Cursor, "pointer");&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Attributes.Add("onclick", "javascript:__doPostBack('ctl00$cphConteudo$grvDatas','Page$" + (paginacao).ToString() + "');");&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;LinkButton num = new LinkButton();&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;num.Style.Add(HtmlTextWriterStyle.TextDecoration, "none");&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;num.Text = "...";&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;num.CommandName = "Page";&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;num.CommandArgument = (paginacao).ToString();&lt;br /&gt;&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Controls.Add(num);&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;pager.Cells.Add(cNum);&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;br /&gt;&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;//Adiciona os Numeric&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;for (int i = paginacao; i &amp;lt; (grvDatas.PagerSettings.PageButtonCount + paginacao); i++)&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;if (i &amp;lt; grvDatas.PageCount)&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;TableCell cNum = new TableCell();&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add("border", "solid 1px #000");&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.VerticalAlign, "middle");&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.BackgroundColor, "#EEE");&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.FontSize, "12px");&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.Width, "25px;");&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.Height, "25px;");&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.TextDecoration, "none");&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.Cursor, "pointer");&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Attributes.Add("onclick", "javascript:__doPostBack('ctl00$cphConteudo$grvDatas','Page$" + (i + 1).ToString() + "');");&lt;br /&gt;&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;LinkButton num = new LinkButton();&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;num.Style.Add(HtmlTextWriterStyle.TextDecoration, "none");&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;num.Text = (i + 1).ToString();&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;num.CommandName = "Page";&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;num.CommandArgument = (i + 1).ToString();&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;if (i == grvDatas.PageIndex)&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;br /&gt;                &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.FontWeight, "bold");&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;br /&gt;&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Controls.Add(num);&lt;br /&gt;            &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;pager.Cells.Add(cNum);&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;br /&gt;&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;//Adiciona o ... Depois dos numeros&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;if ((paginacao + grvDatas.PagerSettings.PageButtonCount) &amp;lt; grvDatas.PageCount)&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;{&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;TableCell cNum = new TableCell();&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add("border", "solid 1px #000");&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.VerticalAlign, "middle");&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.BackgroundColor, "#EEE");&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.FontSize, "12px");&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.Width, "25px;");&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.Height, "25px;");&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.TextDecoration, "none");&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Style.Add(HtmlTextWriterStyle.Cursor, "pointer");&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Attributes.Add("onclick", "javascript:__doPostBack('ctl00$cphConteudo$grvDatas','Page$" + ((paginacao + grvDatas.PagerSettings.PageButtonCount) + 1).ToString() + "');");&lt;br /&gt;&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;LinkButton num = new LinkButton();&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;num.Style.Add(HtmlTextWriterStyle.TextDecoration, "none");&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;num.Text = "...";&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;num.CommandName = "Page";&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;num.CommandArgument = ((paginacao + grvDatas.PagerSettings.PageButtonCount) + 1).ToString();&lt;br /&gt;&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNum.Controls.Add(num);&lt;br /&gt;        &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;pager.Cells.Add(cNum);&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;br /&gt;&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;ImageButton next = new ImageButton();&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;next.ImageUrl = grvDatas.PagerSettings.NextPageImageUrl;&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;next.BorderWidth = 0;&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;next.CommandName = "Page";&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;next.CommandArgument = "Next";&lt;br /&gt;&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cNext.Controls.Add(next);&lt;br /&gt;&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;ImageButton last = new ImageButton();&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;last.ImageUrl = grvDatas.PagerSettings.LastPageImageUrl;&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;last.BorderWidth = 0;&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;last.CommandName = "Page";&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;last.CommandArgument = "Last";&lt;br /&gt;&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;cLast.Controls.Add(last);&lt;br /&gt;&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;pager.Cells.Add(cNext);&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;pager.Cells.Add(cLast);&lt;br /&gt;&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;tab.Rows.Add(pager);&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;//Insere a tabela na celula do pager&lt;br /&gt;    &lt;/code&gt;&lt;code&gt;&amp;nbsp;           &amp;nbsp;&lt;/code&gt;&lt;code&gt;c.Controls.Add(tab);&lt;br /&gt;}&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432151093700815380-6888899358648818785?l=murilomachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murilomachado.blogspot.com/feeds/6888899358648818785/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://murilomachado.blogspot.com/2011/10/criando-um-pager-personalizado-no.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432151093700815380/posts/default/6888899358648818785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432151093700815380/posts/default/6888899358648818785'/><link rel='alternate' type='text/html' href='http://murilomachado.blogspot.com/2011/10/criando-um-pager-personalizado-no.html' title='Criando um pager personalizado no GridView ASP.NET'/><author><name>Mrl</name><uri>http://www.blogger.com/profile/05933161007692815046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-B0UBdtBxWAE/TjFTPQ-8gKI/AAAAAAAAACw/UAI4OM6-dpw/s220/20101210122559_MrL_C1TRYSA36JLFZP59DNVMWK8B4GOX07HIUE2Q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1432151093700815380.post-7594375927141577630</id><published>2011-08-11T11:47:00.000-03:00</published><updated>2011-08-11T11:47:56.390-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ShowMessage Customizado ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom ShowMessage ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom ShowMessage'/><category scheme='http://www.blogger.com/atom/ns#' term='ShowMessage Customizado'/><category scheme='http://www.blogger.com/atom/ns#' term='ShowMessage ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ShowMessage'/><title type='text'>Usando um ShowMessage no ASP.NET</title><content type='html'>Fala galera, hoje eu precisava de usar várias vezes o &lt;code&gt;ClientScript.RegisterStartupScript&lt;/code&gt; e eu estava com preguiça de ficar fazendo isso toda hora.&lt;br /&gt;&lt;br /&gt;Então resolvi criar uma função na minha classe &lt;code&gt;Util&lt;/code&gt; para que ficasse mais fácil a chamada desse método.&lt;br /&gt;&lt;br /&gt;Então fiz uma função &lt;code&gt;Util.ShowMessage(string mensagem)&lt;/code&gt; para economizar dedo. hahaha&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Porém eu me deparei com um impecílio, o &lt;code&gt;Page&lt;/code&gt;, que é a classe pai do &lt;code&gt;ClientScript&lt;/code&gt;, não está acessível de um método estático em uma classe separada da sua página aspx.&lt;br /&gt;&lt;br /&gt;Então para isso devemos recuperar a instância atual da &lt;code&gt;Page&lt;/code&gt; para podermos registrar um script.&lt;br /&gt;&lt;br /&gt;Para isso faça o seguinte:&lt;br /&gt;&lt;br /&gt;&lt;code title="Recuperando o Page"&gt;&lt;/code&gt;&lt;br /&gt;&lt;code title="Recuperando o Page"&gt;Page p = HttpContext.Current.Handler as Page;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;O &lt;code&gt;HttpContext.Handler&lt;/code&gt; é a tratativa da página sendo executada no momento. Então você pode recuperá-la convertendo-a para &lt;code&gt;Page&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Daí é só fazer a sua função!&lt;br /&gt;&lt;br /&gt;A minha ficou assim:&lt;br /&gt;&lt;br /&gt;&lt;code title="Função ShowMessage Pronta"&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code title="Função ShowMessage Pronta"&gt;public static void ShowMessage(string mensagem)&lt;/code&gt;&lt;br /&gt;&lt;code title="Função ShowMessage Pronta"&gt;{&lt;/code&gt;&lt;br /&gt;&lt;code title="Função ShowMessage Pronta"&gt;&amp;nbsp; &amp;nbsp; using (Page p = HttpContext.Current.Handler as Page)&lt;/code&gt;&lt;br /&gt;&lt;code title="Função ShowMessage Pronta"&gt;&amp;nbsp; &amp;nbsp; {&lt;/code&gt;&lt;br /&gt;&lt;code title="Função ShowMessage Pronta"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Random r = new Random();&lt;/code&gt;&lt;br /&gt;&lt;code title="Função ShowMessage Pronta"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string script = String.Format("alert('{0}');", mensagem);&lt;/code&gt;&lt;br /&gt;&lt;code title="Função ShowMessage Pronta"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!p.ClientScript.IsStartupScriptRegistered(r.ToString()))&lt;/code&gt;&lt;br /&gt;&lt;code title="Função ShowMessage Pronta"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/code&gt;&lt;br /&gt;&lt;code title="Função ShowMessage Pronta"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;p.ClientScript.RegisterStartupScript(typeof(HttpContext), r.Next().ToString(), script, true);&lt;/code&gt;&lt;br /&gt;&lt;code title="Função ShowMessage Pronta"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/code&gt;&lt;br /&gt;&lt;code title="Função ShowMessage Pronta"&gt;&amp;nbsp; &amp;nbsp; }&lt;/code&gt;&lt;br /&gt;&lt;code title="Função ShowMessage Pronta"&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Espero que tenham gostado!&lt;br /&gt;&lt;br /&gt;Até qualquer hora!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432151093700815380-7594375927141577630?l=murilomachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murilomachado.blogspot.com/feeds/7594375927141577630/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://murilomachado.blogspot.com/2011/08/usando-um-showmessage-no-aspnet.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432151093700815380/posts/default/7594375927141577630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432151093700815380/posts/default/7594375927141577630'/><link rel='alternate' type='text/html' href='http://murilomachado.blogspot.com/2011/08/usando-um-showmessage-no-aspnet.html' title='Usando um ShowMessage no ASP.NET'/><author><name>Mrl</name><uri>http://www.blogger.com/profile/05933161007692815046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-B0UBdtBxWAE/TjFTPQ-8gKI/AAAAAAAAACw/UAI4OM6-dpw/s220/20101210122559_MrL_C1TRYSA36JLFZP59DNVMWK8B4GOX07HIUE2Q.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1432151093700815380.post-2349147288063157291</id><published>2011-08-04T15:00:00.003-03:00</published><updated>2011-08-04T15:05:39.576-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='customizado'/><category scheme='http://www.blogger.com/atom/ns#' term='app_offline.htm'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='app_offline.htm customizado'/><title type='text'>Usando uma página customizada do app_offline.htm enquanto publica sua aplicação asp.net</title><content type='html'>Olá pessoal, vou ensinar vocês como usar uma página customizada mais amigável enquanto seu site é publicado pelo Visual Studio.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Eu andei pesquisando e não achei nada parecido então eu resolvi postar como se faz isso.&lt;br /&gt;&lt;br /&gt;É muito simples, você não precisa colocar o arquivo na sua aplicação nem no servidor quando você vai publicar, o Visual Studio faz isso por você, e no final da publicação ele mesmo exclui o arquivo, voltando sua aplicação On-line.&lt;br /&gt;&lt;br /&gt;Para customizar a página app_offline.htm simplesmente vá no local onde o VS armazena o arquivo, no meu caso (Windows Vista) ele fica em &lt;code&gt; C:\Users\&lt;pasta do="" usuario=""&gt;\AppData\Roaming\Microsoft\VisualStudio\&lt;versão 10.0,="" 2008="" 2010="" 9.0="" chamar="" do="" for="" o="" se="" vai="" vs,=""&gt;\app_offline.htm&lt;/versão&gt;&lt;/pasta&gt;&lt;/code&gt;, daí você simplesmente altera esse arquivo e pronto! Seu website será muito mais amigável quando você estiver publicando.&lt;br /&gt;&lt;br /&gt;Abraço a todos e espero ter ajudado.&lt;br /&gt;&lt;br /&gt;Até qualquer hora.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432151093700815380-2349147288063157291?l=murilomachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murilomachado.blogspot.com/feeds/2349147288063157291/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://murilomachado.blogspot.com/2011/08/usando-uma-pagina-customizada-do.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432151093700815380/posts/default/2349147288063157291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432151093700815380/posts/default/2349147288063157291'/><link rel='alternate' type='text/html' href='http://murilomachado.blogspot.com/2011/08/usando-uma-pagina-customizada-do.html' title='Usando uma página customizada do app_offline.htm enquanto publica sua aplicação asp.net'/><author><name>Mrl</name><uri>http://www.blogger.com/profile/05933161007692815046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-B0UBdtBxWAE/TjFTPQ-8gKI/AAAAAAAAACw/UAI4OM6-dpw/s220/20101210122559_MrL_C1TRYSA36JLFZP59DNVMWK8B4GOX07HIUE2Q.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1432151093700815380.post-7476152565578716266</id><published>2011-07-27T16:23:00.002-03:00</published><updated>2011-08-04T15:03:47.230-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='json'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Utilizando um Autocomplete do JQueryUI como picker a partir de uma lista de dados do servidor por Json</title><content type='html'>Bom galera, estreiando o blog com uma postagem sobre como utilizar um autocomplete do jqueryui para servir como um picker.&lt;br /&gt;&lt;br /&gt;Vamos linkar o autocomplete com uma lista de dados vinda do servidor carregada por ajax do jquery, logo o retorno será em um formato json.&lt;br /&gt;&lt;br /&gt;Chega de papo e vamos ao que interessa.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Vamos criar primeiramente o objeto html que será nosso picker&lt;br /&gt;&lt;br /&gt;&lt;code title="Objeto HTML picker"&gt;&lt;/code&gt;&lt;br /&gt;&lt;code title="Objeto HTML picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;input name="pessoa" id="pessoa" /&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No caso farei um picker de Pessoas&lt;br /&gt;&lt;br /&gt;Agora no server side vamos criar nossa função que irá retornar os dados para a função ajax. No meu caso eu criei a função na própria página aspx que estou usando o picker, porém a função pode ficar em uma página diferente.&lt;br /&gt;&lt;br /&gt;&lt;code title="Função Server-Side que retorna os Dados para o Autocomplete"&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code title="Função Server-Side que retorna os Dados para o Autocomplete"&gt;&amp;nbsp; &amp;nbsp; [WebMethod()]&lt;/code&gt;&lt;br /&gt;&lt;code title="Função Server-Side que retorna os Dados para o Autocomplete"&gt;&amp;nbsp; &amp;nbsp; public static string[] GetPessoas()&lt;/code&gt;&lt;br /&gt;&lt;code title="Função Server-Side que retorna os Dados para o Autocomplete"&gt;&amp;nbsp; &amp;nbsp; {&lt;/code&gt;&lt;br /&gt;&lt;code title="Função Server-Side que retorna os Dados para o Autocomplete"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; List&lt;pessoa&gt; pessoas = Pessoa.getAllCliente();&lt;/pessoa&gt;&lt;/code&gt;&lt;br /&gt;&lt;code title="Função Server-Side que retorna os Dados para o Autocomplete"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var result = from s in pessoas&lt;/code&gt;&lt;br /&gt;&lt;code title="Função Server-Side que retorna os Dados para o Autocomplete"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;select s.Codigo.ToString() + " - " + s.Nome;&lt;/code&gt;&lt;br /&gt;&lt;code title="Função Server-Side que retorna os Dados para o Autocomplete"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return result.ToArray&lt;string&gt;();&lt;/string&gt;&lt;/code&gt;&lt;br /&gt;&lt;code title="Função Server-Side que retorna os Dados para o Autocomplete"&gt;&amp;nbsp; &amp;nbsp; }&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Temos que herdar a função que irá retornar os dados de um WebMethod para poder ser interpretada pelo browser do cliente ao fazer uma requisição ajax.&lt;br /&gt;&lt;br /&gt;Utilizei também um Linq para retornar os campos de interesse da minha List&lt;t&gt;. Onde eu quero mostrar o código e o nome do cliente.&lt;/t&gt;&lt;br /&gt;&lt;br /&gt;Para retornar os dados para o autocomplete a função deve retornar uma string e você faz um split via script ou retorna logo um array de string que será interpretado como uma estrutura Json.&lt;br /&gt;Ao utilizar o ajax como mostrarei abaixo, retornando o array ele automaticamente armazena os dados na forma de Json no próprio cliente, ficando rápida as consultas para o autocomplete.&lt;br /&gt;&lt;br /&gt;Eu não quis ir filtrando o que o usuário digita e após, por exemplo, 0.4 segundos fazer a pesquisa via ajax de depois disso linkar o resultado no autocomplete, pois isso demoraria mais ainda, pois se ele errasse a digitação e apagasse pra digitar novamente o ajax já teria disparado e geraria várias requisições para o servidor, ficando mais lento do que carregar de uma vez só todos os clientes no autocomplete.&lt;br /&gt;&lt;br /&gt;Minha função&amp;nbsp;Pessoa.getAllCliente() retorna em torno de 15 mil registros. Passando isso para o Json gira em torno de 2Mb de dados para o cliente via requisição ajax. Isso leva em torno de 5~10 segundos para ser armazenado no cliente via rede local. Isso se torna viável para a aplicação que tenho aqui na empresa, no caso uma Intranet.&lt;br /&gt;&lt;br /&gt;Após toda essa explicação, vamos retornar os dados para o cliente e montar o nosso picker, para isso vamos utilizar a chamada &lt;code&gt;$(document).ready()&lt;/code&gt; do jquery, pois precisamo que assim que possível no navegador do cliente já seja carregado todos os dados no picker e montar o autocomplete.&lt;br /&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;$.ajax({&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; type: "POST",&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; url: "Pagina.aspx/GetPessoas",&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; data: "{}",&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; contentType: "application/json; charset=utf-8",&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; dataType: "json",&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; success: function(array) {&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (array.d) {&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $(function() {&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $("#pessoa").autocomplete({&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;source: array.d,&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;delay: 400,&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;minLength: 3,&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;select: function(e, ui) {&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $(this).blur();&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var cod_pessoa = ui.item.value.split(" ").shift();&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $('#content').show('slow');&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $('#tabs-info').hide('slow').load("PaginaInfo.aspx?id=" + cod_pessoa, function() {&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $(this).show('slow');&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;},&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;search: function(e, ui) {&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $('#content').hide('slow');&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; },&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; error: function(xhr) {&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alert(xhr.get_message());&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;&amp;nbsp; &amp;nbsp; }&lt;/code&gt;&lt;br /&gt;&lt;code title="Montando o picker"&gt;});&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Vamos à explicação: Assim que a página esteja disponível fazemos uma chama ajax para trazer os dados da nossa função server side por uma url &lt;code&gt;url: "Pagina.aspx/GetPessoas"&lt;/code&gt; passando vazio como parâmetro da função &lt;code&gt;data: "{}"&lt;/code&gt;, ou seja, se você precisar passar algum parâmetro para a sua função do server side você coloca ele ai no data, pode ser qualquer estrutura de dados a partir do cliente, inclusive um array, e claro também passamos o tipo da chamada como sendo json &lt;code&gt;contentType: "application/json; charset=utf-8",&amp;nbsp;dataType: "json"&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Assim que terminar a chamada e o script montar os dados no cliente ele chama a função success do ajax e é aqui que montaremos no autocomplete. Na função success pegamos o retorno da chamada que é justamente os dados em forma de array json &lt;code&gt;&amp;nbsp;success: function(array) &lt;/code&gt;. Os dados estão armazenados no atributo 'd' da variável 'array'.&lt;br /&gt;&lt;br /&gt;Então verificamos se existe algum dado no array &lt;code&gt;&amp;nbsp;if (array.d) &lt;/code&gt; e se existir montamos o autocomplete passando como parâmetro de dado justamente o 'array.d'&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;$("#pessoa").autocomplete({&lt;/code&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; source: array.d,&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; delay: 400,&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; minLength: 3&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Até agora tudo está montado para que o campo pessoa seja um autocomplete comum, o que vai fazer o autocomplete se tornar um picker é fazermos que ao selecionar algum item dele o site faça alguma outra coisa.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Então implementamos a função select do autocomplete:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;select: function(e, ui) {&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; $(this).blur();&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; var cod_pessoa = ui.item.value.split(" ").shift();&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; $('#content').show('slow');&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; $('#tabs-info').hide('slow').load("PaginaInfo.aspx?id=" + cod_pessoa, function() {&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; $(this).show('slow');&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;});&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Coloquei um blur no começo da função para ele perder o foco quando selecionar um cliente.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Para pegar qual o código do cliente selecionado eu faço um split com o valor selecionado, que é passado no parâmetro ui (segundo parâmetro da função select), e faço um shift() com o array retornado no split(), que nada mais é do que selecionar apenas o primeiro elemento do array e descartar o restante, pois eu fiz um split com " " espaço em branco, retornando por exemplo {"12345","-","Fulano de tal"}, lembrando que a string do array do json foi montada no server side.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Após selecionado o cliente em uma variável podemos fazer qualquer coisa com o cliente na página. Por exemplo, eu uso o código para carregar dinâmicamente várias divs no site. Coloquei um exemplo abaixo:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;var cod_pessoa = ui.item.value.split(" ").shift();&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;$('#content').show('slow');&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;$('#tabs-info').hide('slow').load("PaginaInfo.aspx?id=" + cod_pessoa, function() {&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;$(this).show('slow');&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Eu pego o código do cliente e carrego a página aspx PaginaInfo.aspx passando no get o código. Dentro da página PaginaInfo.aspx eu carrego informações pertinentes à esse cliente e mostro o resultado na div tabs-info que é um Pager do jqueryui também, com alguns efeitos de visibilidade.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;No caso eu implementei a função search do autocomplete também, que irá esconder minha div &lt;code&gt;content&lt;/code&gt; onde fica o conteúdo dessa página, essa função search é disparada quando o se pesquisa alguma coisa no autocomplete.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Para ficar bom também eu coloquei um &lt;code&gt; $("#content).hide("slow"); &amp;nbsp;&lt;/code&gt; no focus do picker também, essa função deve ser implementada fora do ajax, porém dentro do &lt;code&gt; $(document).ready()&lt;/code&gt;.&amp;nbsp;Também limpo o valor do picker quando ganha o foco,&amp;nbsp;ficando assim:&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;$("#pessoa").focus(function() {&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp;$(this).val("");&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp;$('#content').hide('slow');&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;});&lt;/code&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Bom pessoal, é isso! Espero que gostem da minha primeira postagem no meu blog.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Até qualquer hora.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1432151093700815380-7476152565578716266?l=murilomachado.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murilomachado.blogspot.com/feeds/7476152565578716266/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://murilomachado.blogspot.com/2011/07/utilizando-um-autocomplete-do-jqueryui.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1432151093700815380/posts/default/7476152565578716266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1432151093700815380/posts/default/7476152565578716266'/><link rel='alternate' type='text/html' href='http://murilomachado.blogspot.com/2011/07/utilizando-um-autocomplete-do-jqueryui.html' title='Utilizando um Autocomplete do JQueryUI como picker a partir de uma lista de dados do servidor por Json'/><author><name>Mrl</name><uri>http://www.blogger.com/profile/05933161007692815046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-B0UBdtBxWAE/TjFTPQ-8gKI/AAAAAAAAACw/UAI4OM6-dpw/s220/20101210122559_MrL_C1TRYSA36JLFZP59DNVMWK8B4GOX07HIUE2Q.jpg'/></author><thr:total>1</thr:total></entry></feed>
