none
Dica sobre Datagridview RRS feed

  • Pergunta

  • Pessoal ja sanei varias duvidas sobre DataGridView aqui no forum mas estou com mais rsss

    Tenho um DataGridView que foi carregado atraves de um DataSet até ai tudo bem mas quero limpar o DataGridView quero que ele fique como no inicio limpo somente com as colunas mas qdo limpo daq seguinte maneira datagridview.DataSource = null; ele perder o cabeçalho ... como faço para  não correr isso

    E tbm como faço para editar os dados das celulas e ja refletir no Banco de Dados quero mudar um determinado valor diretamente na celula e ja alterar na tabela como faço e qual evento utilizo se alguem puder me dar uma dica ou exemplo agradeço

    Valeuuuuu

    terça-feira, 20 de fevereiro de 2007 22:54

Respostas

  • Junior,

    Se você zerar o DataSet irá conseguir isto, ou seja, ficará o grid em branco, somente com o nome dos campos.

    []s,
    Carlos.

    quinta-feira, 22 de fevereiro de 2007 12:05

Todas as Respostas

  • Junior,

    Você pode limpar o DataSet, ou o Datatable, por exemplo:

    ds.Tables[0].Clear();

    Isto irá limpar o DataGrid também.

    Para alterar o grid e refletir no banco, você deve usar um TableAdapter e um BindingSource. Você pode realizar um teste usando o gerador de código da IDE, basta criar um DataSource (menu Data/New DataSource), se conectar ao banco e depois arrastar a tabela para o form.

    []s,
    Carlos.

     

    terça-feira, 20 de fevereiro de 2007 23:11
  • Carlos não deu certo o modo para limpar o DataGridView ele me retorna erro e o pior que me lembro que o componente DataGrid que ja utilizei a uns tempo atras isso funcionava tanto = datasource = null qto ao modo que me passou esse datagridview sei-la ao inves de ajudar parece que pioraram rssss

    Só mais uma coisa minha grid qdo aparece na carga do form ela aparece somente com a linha do cabeçalho e nenhuma em branco pois a configurei assim como faço para depois remover todas as suas linhas se fizer isso tbm posso conseguir limpar a grid e deixar somente a linha de cabeçalho

    Qto a edição dos itens da grid vc me passou uma dica com o wizard do VS.Net mas se eu usar esse modo ficarei com um caminho ao Banco de Dados  "fixo" né há alguma forma de de usar esse wizard e pegar o caminho da conexão que uso em um arquivo app.config ????

    Valeu de novo

    quarta-feira, 21 de fevereiro de 2007 10:59
  • Junior,

    Você poderia postar o erro? Pois o fato de limpar o DataTable, ou seja, as linhas dele, não deveria gerar erro.

    Sobre a outra questão, a string de conexão fica no app.config.

    []s,
    Carlos.

    quarta-feira, 21 de fevereiro de 2007 14:00
  • Eu tenho um metodo que me retorna um DataSet ao qual uso para carregar combos;lists;grids:

    //METODO
    public static DataSet retornaDataSet(string pSQL,string pTabela)
    {
    cn.Open();
    OleDbDataAdapter da = new OleDbDataAdapter(pSQL, cn);
    DataSet ds = new DataSet();
    da.Fill(ds, pTabela);
    cn.Close();
    return ds;
    }

    // CHAMADA DO METODO PARA CARREGAR O DATAGRIDVIEW
    sql =
    new StringBuilder();
    sql.Append(
    "Select CodSubs,Ano,Jan,Fev,Mar,Abr,Mai,Jun,Jul,Ago, ");
    sql.Append(
    "Set,Out,Nov,Dez From ContagemTempo Where 1=2");
    dtg.DataSource =
    clsDb.retornaDataSet(sql.ToString(), "ContagemTempo").Tables["ContagemTempo"].Clear();
    dtg.Refresh();

    Eu carrego dessa forma e qdo vou limpar a datagridview me da o seguinte erro:
    Error 1 Cannot implicitly convert type 'void' to 'object' C:\Projetos\MrCPS\MrCPS\FrmContagemTempo.cs 44 30 MrCPS

    OBS: a datagridview eu configurei ela atravez das suas propriedades pelo wizard dela e qdo eu tento limpar a datagridview atraves da propriedade DataSorice = null ela limpa mas perde as configurações de cabeçalho e formatação de coluna da forma que vc me passou me gera o erro acima
    dtg.DataSource = clsDb.retornaDataSet(sql.ToString(), "ContagemTempo").Tables["ContagemTempo"].Clear();

     

     

    quarta-feira, 21 de fevereiro de 2007 15:47
  • Junior,

    Faça assim:

    dtg.DataSource = clsDb.retornaDataSet(sql.ToString(), "ContagemTempo")
    ((DataSet) dtg.DataSource).Clear();

    quarta-feira, 21 de fevereiro de 2007 16:41
  • Junior,

    Se você está querendo limpar o Grid antes de carregá-lo novamente, não precisa executar o método Clear(), pois no seu método retornaDataSet() vocêw está criando um novo dataset.

    Então acho que o código para limpar o Grid não deveria ser chamado na função que faz a carga dos dados. Você poderia usar o código que o Francisco postou em um outro local, por exemplo no início da chamada para carregar o DataGridView:

    ((DataSet)dtg.DataSource).Clear();

    []s,
    Carlos.

    quarta-feira, 21 de fevereiro de 2007 16:59
  • Então o problema é o seguinte ... mesmo usando o codigo fornecido ainda da erro ao limpar o datagridview

    O seguinte erro : Unable to cast object of type 'System.Data.DataTable' to type 'System.Data.DataSet'.

    Agora eu fiz o seguinte codigo para limpar o datagridview não gostei nda desse codigo mas foi o que eu arrumei rssss para sanar o problema temporariamente

    sql = new StringBuilder();
    sql.Append("Select CodSubs,Ano,Jan,Fev,Mar,Abr,Mai,Jun,Jul,Ago, ");
    sql.Append("Set,Out,Nov,Dez From ContagemTempo Where 1=2");
    dtg.DataSource = clsDb.retornaDataSet(sql.ToString(), "ContagemTempo").Tables["ContagemTempo"];
    dtg.Refresh();

    Com esse codigo acima limpo a datagridview e mantenho o cabeçalho ... o estranho é que qdo usei o DataGrid no VS2003 nunca tive esse problema usanda dtg.DataSoruce = null e a grid limpava sem perder a formatação

    Valeu pela ajuda de vcs todos ...

    quarta-feira, 21 de fevereiro de 2007 18:16
  • Junior,

    Se você simplesmente fizer o cast como nós sugerimos, não terá esse problema.

    quarta-feira, 21 de fevereiro de 2007 18:24
  • Então o problema pode ser por causa do metodo que eu estou usando vou mudar o esquema ao invés do metodo que eu criei vou usar sem o metodo vou usar um dataset e um dataadapter e testar esse cast que vcs me passaram valeu mesmo pela ajuda ...

    Tem como eu deixar um datagridview com uma linha somente ou seja a do cabeçalho e uma uma outra somente pois será usada varias colunas mas somente uma linha ... ha como configurar isso

    Valeu

    quinta-feira, 22 de fevereiro de 2007 11:28
  • Junior,

    Se você zerar o DataSet irá conseguir isto, ou seja, ficará o grid em branco, somente com o nome dos campos.

    []s,
    Carlos.

    quinta-feira, 22 de fevereiro de 2007 12:05