1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Limpar uma datagridview em C#

Discussão em 'Programação' iniciada por high, 8 de Abril de 2009. (Respostas: 7; Visualizações: 14238)

  1. Tou a desenvolver uma aplicação em C# que acede a uma base de dados em Access (que por sua vez está ligado a uma base de dados em SQL).

    Estou a criar um gerador de frases SQL que depois envia à base de dados em access e recebe de volta os resultados.

    Por outras palavras, tenho um conjunto de comboboxes e check boxes que o utilizador escolhe e gera a frase SQL. depois este é enviado para o Access e recebe de volta um objecto que depois mostra num datagridview.

    Até aqui não há problemas (ironicamente, penso que seja o mais complexo). A minha dificuldade esta na actualização do datagrid. Por exemplo se o utilizador escolher no inicio apenas nome e morada, estes são apresentados. Mas de seguida se o utilizador escolher Nome, e telefone, estes são apresentados mas a morada continua no datagridview.

    já tentei dizer antes que o datagrid deve ser limpo através dos comandos
    datagridview.datasource=null;
    datagridview.resetbindings();

    mas o problema persiste :S.

    Alguem tem uma ideia de como limpar o datagrid (incluindo os nomes das colunas), antes de fazer uma nova pesquiza ao access?

    Cumps,
    High
     
  2. pks

    pks Power Member

    datagridview.Rows.Clear()
    o nome das colunas tens k fazer datagridview.Columns.Clear();
     
  3. Já tentei essa solução mas obtenho o seguinte erro.

    Can not intercept exception. Debugged program can not be continued and properties can not be evaluated.
    System.ArgumentException: Cannot clear this list.
    at System.Data.DataView.System.Collections.IList.Clear
    at System.Windows.Forms.DataGridViewRowCollection.Clear
    at ClientApp.RawData.Button4Click in c:\Users\********
    at System.Windows.Forms.Control.OnClick
    at System.Windows.Forms.Button.OnClick
    at System.Windows.Forms.Button.OnMouseUp
    at System.Windows.Forms.Control.WmMouseUp
    at System.Windows.Forms.Control.WndProc
    at System.Windows.Forms.ButtonBase.WndProc
    at System.Windows.Forms.Button.WndProc
    at ControlNativeWindow.OnMessage
    at ControlNativeWindow.WndProc
    at System.Windows.Forms.NativeWindow.DebuggableCallback
    at ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop
    at ThreadContext.RunMessageLoopInner
    at ThreadContext.RunMessageLoop
    at System.Windows.Forms.Application.Run
    at ClientApp.Program.Main in c:\Users\************

    Há alguma soluçãi que me está a passar ao lado?

    Cumps,
    High
     
  4. Granadafeup

    Granadafeup Power Member

    Ao actualizar a tua datasource fazes outra vez o Bind?
     
  5. Já tentei de ambas as formas. Ligar directamente à datatable e através da binding source. correntemente tá assim:

    da.Fill(emp);
    da.Update(emp);
    //BindingSource to sync DataTable and DataGridView
    BindingSource bSource = new BindingSource();
    bSource.DataSource = emp;

    dataGridView1.DataSource=emp;


    também já estive com o datagridview ligado directamente à binding source:

    da.Fill(emp);
    da.Update(emp);
    //BindingSource to sync DataTable and DataGridView
    BindingSource bSource = new BindingSource();
    bSource.DataSource = emp;

    dataGridView1.DataSource=bSource;

    Com ambos os métodos obtenho o mesmo erro.
     
  6. PNDmartins

    PNDmartins Power Member

    Já experimentas-te meter a datasource = null e depois remover as colunas e rows?

    Código:
    DataGridView1.DataSource=null; [COLOR="YellowGreen"]//Remover a datasource[/COLOR]
    DataGridView1.Columns.Clear(); [COLOR="YellowGreen"]//Remover as colunas[/COLOR]
    DataGridView1.Rows.Clear();    [COLOR="YellowGreen"]//Remover as linhas[/COLOR]
    DataGridView1.Refresh();    [COLOR="YellowGreen"]//Para a grid se actualizar[/COLOR]
    
     
  7. Fantástico. Já funcionou. Muito Obrigado PNDmartins.

    Só um detalhe para o caso de futuros utilizadores verem este post. A datatable também tem de ser limpo ou seja,

    DataGridView1.DataSource=null; //Remover a datasource
    DataGridView1.Columns.Clear(); //Remover as colunas
    DataGridView1.Rows.Clear(); //Remover as linhas
    DataGridView1.Refresh(); //Para a grid se actualizar
    emp.clear(); //limpar a dataset que é utilizado para preencher a datagrid
     
  8. PNDmartins

    PNDmartins Power Member

    Fico contente por ter ajudado :)
     

Partilhar esta Página