none
Gridview responsivo RRS feed

  • Pergunta

  • Boa tarde, estou fazendo um gridview responsivo, ficou ótimo quando carrego a página pela primeira vez, o problema é quando eu recarrego somente o Gridview, ele não fica responsivo

    Eis o meu código

    Jquery

     <script type="text/javascript">  
    
            $(function () {
                 $('[id*=GridView1]').footable();
             });
    
        </script> 

    Metodo para carregar o Gridview

     private void CarregarGridView()
            {
    
                int currentPage = GridView1.PageIndex + 1;
    
                hfPesquisaraux.Value = "";
    
                //Preenche a Session 
                Session["SessionListar"] = objCadastroDAO.Listar(listarRegistrosAtivos);
    
                //Bind the GridView control to the data source.
                GridView1.DataSource = Session["SessionListar"];
                GridView1.DataBind();
                lblPaginaAtual.Text = "Página " + currentPage.ToString() + " de " + GridView1.PageCount.ToString();
                GridView1.DataBind();
    
    
                //Attribute to show the Plus Minus Button.
                GridView1.HeaderRow.Cells[0].Attributes["data-class"] = "expand";
    
                //Attribute to hide column in Phone.
               
                GridView1.HeaderRow.Cells[3].Attributes["data-hide"] = "phone";
                GridView1.HeaderRow.Cells[4].Attributes["data-hide"] = "phone";
                GridView1.HeaderRow.Cells[5].Attributes["data-hide"] = "phone";
                GridView1.HeaderRow.Cells[6].Attributes["data-hide"] = "phone";
    
                //Adds THEAD and TBODY to GridView.
                GridView1.HeaderRow.TableSection = TableRowSection.TableHeader;
    
                QuantidadeRegistros(quantidadeRegistros_sql);
    
                //Se Gridview for vazio...
                GridViewVazio();
    
    
            }

    E quando a página é carregada pela primeira vez

    protected void Page_Load(object sender, EventArgs e)
            {
    
                if (!IsPostBack)
                {
                    CarregarGridView();
    
                }
            }

    Funciona de boa assim,


    Mas quando clico em listar novamente o grid, fica assim

    Ou seja, não fica mais responsivo, alguém pode dar uma ajuda? 

    *VS 2013, WEB FORMS


    Se for para responder "procure no google", nem perca seu tempo ! :)

    quinta-feira, 22 de fevereiro de 2018 15:20

Respostas

  • Juliano Nunes, obrigado por responder

    Sim, o botão Listar chama o método CarregarGridView(). Sim meu Grid esta em um UPDATEPANEL

    protected void btnListar_ServerClick(object sender, EventArgs e)
            {
                try
                {
    
    
                    CarregarGridView();
    
    
    
                }
    
                catch (Exception erro)
                {
    
                    lblErro.Visible = true;
                    lblErro.Text = "Não foi possível executar essa operação! ";
                }
            }
    


    Se for para responder "procure no google", nem perca seu tempo ! :)

    • Marcado como Resposta gelson_ventura quinta-feira, 22 de fevereiro de 2018 21:53
    quinta-feira, 22 de fevereiro de 2018 17:17

Todas as Respostas

  • O botão listar executa uma ação no servidor ou usa uma chamada assíncrona (JavaScript)? Seu grid está em UpdatePanel?

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    quinta-feira, 22 de fevereiro de 2018 17:06
  • Juliano Nunes, obrigado por responder

    Sim, o botão Listar chama o método CarregarGridView(). Sim meu Grid esta em um UPDATEPANEL

    protected void btnListar_ServerClick(object sender, EventArgs e)
            {
                try
                {
    
    
                    CarregarGridView();
    
    
    
                }
    
                catch (Exception erro)
                {
    
                    lblErro.Visible = true;
                    lblErro.Text = "Não foi possível executar essa operação! ";
                }
            }
    


    Se for para responder "procure no google", nem perca seu tempo ! :)

    • Marcado como Resposta gelson_ventura quinta-feira, 22 de fevereiro de 2018 21:53
    quinta-feira, 22 de fevereiro de 2018 17:17
  • Tente da seguinte forma:

    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(init);
    
    function init() {
        $('[id*=GridView1]').footable();
    }


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    quinta-feira, 22 de fevereiro de 2018 18:26
  • Onde eu colocaria essa parte ?
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(init);

    Se for para responder "procure no google", nem perca seu tempo ! :)

    quinta-feira, 22 de fevereiro de 2018 21:47
  • Amigo obrigado, meu fraco era JS mesmo, depois que você mudou a função em JS, eu só precisei chama-la via RegisterStartupScript no botão Listar, ficando o backend dessa maneira

    protected void btnListar_ServerClick(object sender, EventArgs e)
            {
                try
                {
    
                    CarregarGridView();
    
                    //Chama a função GridView Responsivo
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "LaunchServerSide", "$(function() { init(); });", true);
    
                }
    
                catch (Exception erro)
                {
    
                    lblErro.Visible = true;
                    lblErro.Text = "Não foi possível executar essa operação! ";
                }
            }

    E o no html apenas coloquei a função que você escreveu

     
    <script type="text/javascript">
    
    
     //chama a função para Grid ficar Responsivo 
             function init() {
                 $('[id*=GridView1]').footable();
             }
    
             //Ao carregar a página chama a função para Grid ficar Responsivo
             $(function () {
                 $('[id*=GridView1]').footable();
             });
            
    
            </script> 
        


    Se for para responder "procure no google", nem perca seu tempo ! :)



    quinta-feira, 22 de fevereiro de 2018 21:55