none
Como Recarrego o GridView ? RRS feed

  • Pergunta

  • ola,

    Fiz uma aplicação no ASP.net q consiste em uma pagina com campos que serão preenchidos enviados para o banco e mostrados em um Gridview , toda essa parte já está feita mas quando envio os dados para o banco ñ sei como fazer para q o Gridview actualize e já mostrar os dados enviados só consigo se fechar a aplicação e abrir de novo aí os dados podem ser vistos, gostaria de saber como faço isso na aplicação recarregar o GridView, caso alguém possa me ajudar ?

    Grato.

    Renato.
    sábado, 20 de outubro de 2007 15:55

Respostas

  •  

    Olá... após o código p/ inclusão ponha SeuGridView1.DataBind();

     

     

     

     

     

     

     

     

     

     

     

     

     

    __________________________

     

    Espero ter ajudado e por favor não esqueça de classificar a mensagem!

    segunda-feira, 22 de outubro de 2007 12:25
  • Olá Renato! esta dando erro porque vc definiiu uma consulta pelo assistente e agora esta tentando carregar o mesmo GridView via código... então o DataSourceID está com a consulta do Wizard e o DataSource com a consulta via código...

     

    O erro está sendo bem claro... está pedindo p/ vc remover uma dessas definições....remova uma delas que vai funcionar...ok?

     

     

    agora se vc quiser 2 situações diferentes p/ o mesmo GridView vc pode fazer o seguinte (lembrando que é só uma sugestão, fica a seu critério a escolha):

     

    realizar 2 tipos de consultas diferentes via código

    CmdSQL1 e CmdSQL2;

     

    ou vc pode incluir um outro GridView na sua página aplicando o a 2ª consulta...

     

     

     

    lembrando que é só uma sugestão existem várias outras maneiras de fazer isso...só p/ que fique claro a explicação do erro que vc postou...

     

     

     

    abraço!

    sexta-feira, 26 de outubro de 2007 11:38

Todas as Respostas

  • Não tenho certeza se irá funcionar, mas tenta dar um fill no dataset e executar o databind no grid novamente, após a inclusão dos dados no formulário.

    sábado, 20 de outubro de 2007 17:30
  •  

    Olá... após o código p/ inclusão ponha SeuGridView1.DataBind();

     

     

     

     

     

     

     

     

     

     

     

     

     

    __________________________

     

    Espero ter ajudado e por favor não esqueça de classificar a mensagem!

    segunda-feira, 22 de outubro de 2007 12:25
  •  

    quinta-feira, 25 de outubro de 2007 00:51
  • Ailton,

     

    Cara muuuuiiito obrigado , foi só colocar o codigo q deu certo , valeu msm.

    E só mais uma coisa ,oq exatamente faz o DataBind, qual a função dele ?

     

    Fora isso Sou muito grato a vc , fico mais estimulado a programar sabendo q existem pessoas como vc para auxiliae a leigos como eu.

     

    Abraço.

    quinta-feira, 25 de outubro de 2007 00:55
  • Mais uma duvida?!

     

    esse é o código final da inserção dos dados:

     

     

    conexao.Open();//abrindo cenexão

    comando.ExecuteNonQuery();//executando comando SQL

    conexao.Close();//fechando conexão

    LimparCampos();

    GridView1.DataBind();

     

    minha duvida agora é quanto ao atualizar do browser, pq quando coloco os dados e envio tive q fazer uma método pra poder apagar os campos pq ñ estavam sumindo , mas msm com os campos sendo limpos quando faço o atualizar os dados q acabaram d ser enviados e apagados são mandados novamente pq?

    to com essa duvida agora como faço pra isso ñ acontecer ?

     

    Valeu pessoal, agradeço a sua ajuda anterior e peço a sua ajuda novamente.

     

    Abraço.

    quinta-feira, 25 de outubro de 2007 01:04
  •  

    Olá Renato, o esquema é o seguinte, para utilizar o Grid provaelmente você setou uma propriedade DataSource e depois execurtou o DataBind correto?

    Bom para esclarecer sua dúvida vou esplicar rapidinho como funciona, quando você seta o DataSource, você simplesmente indica ao Grid onde estão os dados para que ele leia, na verdade os dados são realmente copiados e formatos somente ao executar o DataBind!!

    Tem mais uma coriosidade sobre o DataBind, ele é recursivo, significa que ao executar o DataBind em um controe qualquer, tudo que estiver dentro do grid automaticamente também executa o DataBind...

    Mas não se preocupe aos poucos você se familiariza mais e vai pegando tudo automaticamente, se tiver dúvidas, pode enviar um e-mail pra mim também, é rafaelborgescaixeta@hotmail.com.

     

    So pra aproveitar a oportunidade, você já ouviu falar de AJAX? Bom eu mantenho um blog sobre desenvolvimento .Net, sobre AJAX principalmente no endereço www.studiomascara.com/blog, entra lá depois!

     

    Abraços!

    quinta-feira, 25 de outubro de 2007 02:00
  • Olá Renato! o DataBind serve p/ fazer ligação da fonte de dados ao GridView(ou outro controle que necessite de um DataSource) ou seja... ele serve p/ renderizar os dados no GridView...

    mas dê uma olhada nesse link.. tem uma explicação melhor...

     

     

    http://support.microsoft.com/kb/307860/pt-br

     

     

     

     

    abraço!

    quinta-feira, 25 de outubro de 2007 02:09
  •  

    Olha só Renato, se eu entedi bem esse pedaço de código insere no banco um novo registro ou deleta do banco um registro correto? Pois bem, sempre que você alterar os dados no banco você deve recarregar a fonte de dados novamente no grid (Setando a propriedade DataSource) e logo em seguida execute o comando para que o Grid recarregue novamente (o DataBind) o pedao de código ficaria algo assim:

     

    /* Seu código de inserir ou deletar conforme você postou acima */

    SeuGrid.DataSource = SuaFuncaoQueBuscaOsDados();

    SeuGrid.DataBind();

     

    Se ainda tiver alguma dúvida, me avisa.

    quinta-feira, 25 de outubro de 2007 02:14
  • quando vc limpa os campos e depois dá um Bind no gridView ele será ligado novamente ao DataSource que vc definiu...

    SqlDataSource, ObjectDataSource... além do mais ao limpar os campos vc não limpa o DataSource mas limpa somente o GridView que é uma "table" html quando renderizado no browser e toda sua página contendo os controles...

    Ao inserir os dados vc precisa atrbuir novamente o DataSource ao seu GridView e depois dá o bind novamente p/ que vc possa vizualizar o GridView com os dados atualizados..

    faz isso que vai funcionar blza!

    quinta-feira, 25 de outubro de 2007 02:15
  • Rafael Caixeta .

    Ailton Filho ,

     

    Vcs são demais 10 nota 1000 pra vcs a cada postagem fica mais claro,mais facil entender todo o ASP.net.

    Rafael vou colocar o codigo todo pra vc ver oq eu to fazendo, ainda to com duvida sobre oq colocar no DataSource.

     

    Valeu msm pessoal , brigadão , fiquei muito fatisfeito com suas respostas.

     

     

    codigo:

     

    protected void Page_Load(object sender, EventArgs e)

    {

    }

     

     

    protected void Button1_Click(object sender, EventArgs e)

    {

    string CmdSQL = "insert into Cliente(nome,sobrenome,email,telefone,endereco,cep,estado,cidade,pais,observacoes) values('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "','" + TextBox7.Text + "','" + TextBox8.Text + "','" + TextBox9.Text + "','" + TextBox10.Text + "')";

     

    //definindo string de conexão

    SqlConnection conexao = new SqlConnection(@"Data Source=RENATO-PC;Initial Catalog=renato;User ID=sa");

     

    SqlCommand comando = new SqlCommand(CmdSQL, conexao);

    conexao.Open();//abrindo cenexão

    comando.ExecuteNonQuery();//executando comando SQL

    conexao.Close();//fechando conexão

    LimparCampos();

    GridView1.DataBind();//atualiza gridview

     

    }

     

    protected void Button2_Click(object sender, EventArgs e)

    {

    LimparCampos();

    }

     

     

     

    void LimparCampos()

    {

     

     

    TextBox1.Text = "";

    TextBox2.Text = "";

    TextBox3.Text = "";

    TextBox4.Text = "";

    TextBox5.Text = "";

    TextBox6.Text = "";

    TextBox7.Text = "";

    TextBox8.Text = "";

    TextBox9.Text = "";

    TextBox10.Text = "";

    }

    }

    quinta-feira, 25 de outubro de 2007 02:55
  • Legal é isso aí mesmo, faltou só definir o DataSource novamente, entre o comando LimparCampos(); e a execução do DataBind coloque algo do tipo:

     

    GridView1.DataSource = BuscarDados();

     

    Em seguida crie uma função

     

    public DataSet BuscarDados() {

    SqlDataAdapter adap1 = new SqlDataAdapter("select * from Cliente", "CONNECTIONSTRING");

    DataSet ds1 = new DataSet();

    adap1.Fill(ds1);

    return ds1;

    }

     

    Entendeu direitinho??

     

    quinta-feira, 25 de outubro de 2007 11:48
  • Rafael,

     

    Primeiro muito obrigado por me ensinar ASP.net, a cada postagem compreendo mais, sobre o codigo q vc me passo eu compreendi o significado , mas ñ compreendi o pq d ñ ter funcionado na minha aplicação, coloquei o codigo exatamente como vc descreveu o codigo está assim agoraSadcomentarios mais abaixo)

     

    public partial class _Default : System.Web.UI.Page

    {

     

     

    protected void Page_Load(object sender, EventArgs e)

    {

    }

     

     

    protected void Button1_Click(object sender, EventArgs e)

    {

    string CmdSQL = "insert into Cliente(nome,sobrenome,email,telefone,endereco,cep,estado,cidade,pais,observacoes) values('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "','" + TextBox7.Text + "','" + TextBox8.Text + "','" + TextBox9.Text + "','" + TextBox10.Text + "')";

     

    //definindo string de conexão

    SqlConnection conexao = new SqlConnection(@"Data Source=RENATO-PC;Initial Catalog=renato;User ID=sa");

     

    SqlCommand comando = new SqlCommand(CmdSQL, conexao);

     

    conexao.Open();//abrindo cenexão

    comando.ExecuteNonQuery();//executando comando SQL

    conexao.Close();//fechando conexão

    LimparCampos();

    GridView1.DataBind();//atualiza gridview

    GridView1.DataSource = BuscarDados();

     

     

    }

     

    protected void Button2_Click(object sender, EventArgs e)

    {

    LimparCampos();

    }

    public DataSet BuscarDados()

    {

    SqlDataAdapter Adap1 = new SqlDataAdapter(" select * from Cliente", @"Data Source=RENATO-PC;Initial Catalog=renato;User ID=sa");

    DataSet DS1 = new DataSet();

    Adap1.Fill(DS1);

    return DS1;

     

    }

     

    void LimparCampos()

    {

     

     

    TextBox1.Text = "";

    TextBox2.Text = "";

    TextBox3.Text = "";

    TextBox4.Text = "";

    TextBox5.Text = "";

    TextBox6.Text = "";

    TextBox7.Text = "";

    TextBox8.Text = "";

    TextBox9.Text = "";

    TextBox10.Text = "";

    }

    }

     

    só q quando executo a inserção dos dados aparece essa mensagem d erro :

    DataSource e DataSourceID estão definidos em 'GridView1'. Remova uma definição.

    isso tem haver com o fato de eu ter feito a conexão do meu GridView pelo assistente do mesmo ?

    fiquei sem entender o pq desse erro já q quando eu fecho a aplicação e abro novamente os dados foram enviados, mesmo dando o erro ??????

     

    Rafael , agradeço demais sua atenção !!!!.

    Abraço.

     

    sexta-feira, 26 de outubro de 2007 00:23
  • Renato eu sei q minha resposta nao irá te ajudar no seu problema, mas um outro detalhe q gostaria de comentar é sobre limpar os controles na sua aplicação.

     

    Use o codigo abaixo para ficar mais profissional e produtivo ao inves de tantos textbox.text=""

     

     foreach (Control c in this.Controls)
      {
       if (c is TextBox)
        c.Text = "";
      }

     

     

    Espero ter ajudado

    sexta-feira, 26 de outubro de 2007 10:51
  • Olá Renato! esta dando erro porque vc definiiu uma consulta pelo assistente e agora esta tentando carregar o mesmo GridView via código... então o DataSourceID está com a consulta do Wizard e o DataSource com a consulta via código...

     

    O erro está sendo bem claro... está pedindo p/ vc remover uma dessas definições....remova uma delas que vai funcionar...ok?

     

     

    agora se vc quiser 2 situações diferentes p/ o mesmo GridView vc pode fazer o seguinte (lembrando que é só uma sugestão, fica a seu critério a escolha):

     

    realizar 2 tipos de consultas diferentes via código

    CmdSQL1 e CmdSQL2;

     

    ou vc pode incluir um outro GridView na sua página aplicando o a 2ª consulta...

     

     

     

    lembrando que é só uma sugestão existem várias outras maneiras de fazer isso...só p/ que fique claro a explicação do erro que vc postou...

     

     

     

    abraço!

    sexta-feira, 26 de outubro de 2007 11:38
  • Ailton,

    D certa forma entendi sua explicação, só ñ sei ainda oq eu devo tirar pq o conceito de DataSourceID é novo para mim.
    Com sua explicação consegui diferenciar a consulta via código e a via wizard, andei pesquisando e vi q esse é um recurso novo do GridView q antes tudo era feito pelo DataSource, DataSet, por isso estou um pouco confuso.
    Então baseado na sua resposta poderia me indicar qual definição eu devo remover, enquanto isso tento compreender mais os recursos DataSet,DataSource e DataSourceID,

    muito obrigado pela atenção e principalmente paciência.
    segunda-feira, 29 de outubro de 2007 15:31
  • Marcelo,

    Agradeço a sua dica, sou iniciante na plataforma .NET e toda ajuda e dica é bem vinda e agradeço pela atenção.
    Esses recursos q vc e passou são totalmente novos para mim, mas graças ao bom deus q ñ me deu beleza mas uma boa logica d programação rsrsrs, compreendi o seu codigo,oq ele ira fazer isso blz, mas como são recursos novos talves eu esteja usando-os da forma errado ,pois estou tendo dificuldades , coloquei o código e está aparecendo um erro de compilação, tal erro é :

    System.Web.UI.Control ñ contem uma definição para 'Text';

    Peço q por gentileza me ensine a usar esses recursos para q eu possa entender mais do Framework e quem sabe um dia poder dar dicas para vc tbm (q pretensão heim rsrsrs). Agradeço sua atenção.

    segunda-feira, 29 de outubro de 2007 15:41
  • Oi! que bom que vc entendeu! seguinte:

     

    A consulta que vc criou via Wizard está setada no DataSourceID que seria visualmente falando o (por exemplo ) "SqlDataSource" que vc arrasta p/ o seu WebForm ok?

     

    p/ removê-lo clique sobre o seu GridView e pressione a tecla F4(abre a aba de propriedades) ou então abra a aba de propriedades que fica ao lado...lá tem a propriedade DataSourceID que ´contém o mesmo nome do seu "SqlDataSource" ou "ObjectDataSource" que vc arrastou p/ seu WebForm....

     

     

    p/ remover a outra definição que seria o "DataSource " é só vc retirar o código que faz a outra consulta... repare em seu código que em uma das linhas vc faz: SeuGridView.DataSource =  BuscarDados(); onde BuscarDados retorna um DataSet com o resultado da sua consulta....

     

     

     

    consegui ser mais claro? qualquer coisa é só postar!

     

     

    abraço!

     

    segunda-feira, 29 de outubro de 2007 17:25