none
Atualizar Grid em uma PartialView RRS feed

  • Pergunta

  • Boa tarde,

    Tenho uma View que carrega uma PartialView com um webGrid, na View eu tenho uma caixa de texto e um botão para pesquisa de produtos, na PartialView uma Grid com a listagem de produtos. Eu preciso que quando for pesquisado algo a Grid seja atualizada com os dados retornados do banco. Isso deveria ser feito com Ajax? Alguem tem algum exemplo pra eu dar um olhada. Obrigado. 

    quarta-feira, 29 de janeiro de 2014 15:55

Respostas

  • Alan blz cara. Acho que a melhor solução é realmente a utilização de Ajax. 

    Tenta essa link aqui creio que a sua solução está nele: http://diretonocodigo.blogspot.com.br/2011/11/grid-via-ajax-no-aspnet-mvc.html

    Espero que ajude. Abraço.  

    • Marcado como Resposta Alan F. Almeida quinta-feira, 30 de janeiro de 2014 13:26
    quinta-feira, 30 de janeiro de 2014 11:33
  • Olá, acho que na sua situação o ideal seria, sempre gerar o grid vazio e carrega-lo com ajax. A cada pesquisa feita, recarregar o grid com ajax. Para isso, primeiro você precisa ter Actions que retornando os dados na forma de Json, exemplo:

    public ActionResult Dados()
    {
        var dados = from t in context.Coisas
                    select new { Nome = t.Nome, Id = t.Id };
        
        return Json(dados, JsonRequestBehavior.AllowGet);
    }

    A parte java script deve ser um método, que acessa o action, faz um iteração no resultado e converte em <tr><td>, após isso basta adicionar estes <tr> td> em sua <table> (que seria o grid). Existem algumas ferramentas que te auxiliam para fazer este processo.


    Ao infinito e além!

    • Marcado como Resposta Alan F. Almeida quinta-feira, 30 de janeiro de 2014 13:26
    quinta-feira, 30 de janeiro de 2014 11:38

Todas as Respostas

  • Alan,

    É tranquilo, primeiro, altere seu método de consulta para um método privado e chame no momento que quiser que a consulta atualize.

    caso deseje fazer de outra forma, inclua isto em seu código: 

    <asp:SqlDataSource ID="MasterDetail" ... EnableCaching="True"

    Tente fazer a atualização para o botão que foi acionado:

    protected void ConsultarBanco_Click(object sender, EventArgs e)
    {
        MasterDetail.EnableCaching = false;
        GridView1.DataBind();
        MasterDetail.EnableCaching = true;
    }

    Segue link

    http://stackoverflow.com/questions/15274928/refresh-gridview-after-update

    quarta-feira, 29 de janeiro de 2014 17:13
  • Alexandre, obrigado pela sua resposta mas eu não entendi, para trabalhar com WebGrid eu faço um List<Produtos> e passo para a View, não sei se desse jeito é a melhor forma mas é assim que faço. Outra informação, eu estão utilizando ASP.Net MVC 3 com razor.


    quarta-feira, 29 de janeiro de 2014 22:04
  • Alan blz cara. Acho que a melhor solução é realmente a utilização de Ajax. 

    Tenta essa link aqui creio que a sua solução está nele: http://diretonocodigo.blogspot.com.br/2011/11/grid-via-ajax-no-aspnet-mvc.html

    Espero que ajude. Abraço.  

    • Marcado como Resposta Alan F. Almeida quinta-feira, 30 de janeiro de 2014 13:26
    quinta-feira, 30 de janeiro de 2014 11:33
  • Olá, acho que na sua situação o ideal seria, sempre gerar o grid vazio e carrega-lo com ajax. A cada pesquisa feita, recarregar o grid com ajax. Para isso, primeiro você precisa ter Actions que retornando os dados na forma de Json, exemplo:

    public ActionResult Dados()
    {
        var dados = from t in context.Coisas
                    select new { Nome = t.Nome, Id = t.Id };
        
        return Json(dados, JsonRequestBehavior.AllowGet);
    }

    A parte java script deve ser um método, que acessa o action, faz um iteração no resultado e converte em <tr><td>, após isso basta adicionar estes <tr> td> em sua <table> (que seria o grid). Existem algumas ferramentas que te auxiliam para fazer este processo.


    Ao infinito e além!

    • Marcado como Resposta Alan F. Almeida quinta-feira, 30 de janeiro de 2014 13:26
    quinta-feira, 30 de janeiro de 2014 11:38
  • Fernando e Fabio, obrigado pelas respostas,

    Fernando dei uma olhada no Link que você mandou, era exatamente isso que eu tava procurando obrigado.

    quinta-feira, 30 de janeiro de 2014 13:26