Pergunta

Eu tentei -

DataGridView1.DataSource=Nothing

e

DataGridView1.DataSource=Nothing
DataGridView1.Refresh()

e

DataGridView1.RefreshEdit()

Nenhum deles funciona ..

Eu escrevi um método que define o DataSource do DataGridView quando executado. mas cada vez que eu executá-lo, ele replica os dados com novo valor e anexa aos conteúdos anteriores da DGV .. Eu quero limpar o conteúdo e, em seguida, adicione os valores .. Isso é possível?

Foi útil?

Solução

Se o DataGridView está vinculada a qualquer fonte de dados, você terá que definir a propriedade DataSource do DataGridView para Nothing.

Se o DataGridView não está ligado a qualquer fonte de dados, este código irá fazer o truque:

DataGridView.Rows.Clear()

Outras dicas

Para os casos não ligados note que:

DataGridView.Rows.Clear()

folhas da coleção de colunas no local.

DataGridView.Columns.Clear()

.. irá remover todas as colunas e linhas. Se você estiver usando a DGV não ligado, e na próxima utilização a mudança colunas, limpando as linhas pode não ser adequada. Para código da biblioteca limpar todas as colunas antes de adicionar colunas.

Eu provavelmente usar essa ...

DataGridView1.Rows.Clear()

para limpar as linhas e depois religar.

Siga o caminho mais fácil como isto

assumir que ta é um DataTable

ta.clear()
DataGridView1.DataSource = ta
DataGridView1.DataSource = Nothing

Can você não vincular o datagridview para uma coleção vazia (em vez de null). Que fazer o truque?

Para remover o antigo recorde no datagridview quando você está à procura de novo resultado, com gravação evento button_click o seguinte código,

me.DataGridview1.DataSource.clear ()

este código vai ajudar a remover o antigo registro no datagridview.

Eu achei que a configuração da fonte de dados para nula remove as colunas. Isto é o que funciona para mim:

c #:

((DataTable)myDataGrid.DataSource).Rows.Clear();

VB:

Call CType(myDataGrid.DataSource, DataTable).Rows.Clear()

O meu DataGridView também está vinculado a um DataSource e myDataGridView.Columns.Clear() funcionou bem, mas myDataGridView.Rows.Clear() não. Apenas um FYI para aqueles que têm tentado .Rows.

Não faça nada em DataGridView, basta limpar a fonte de dados. Eu tentei limpar método myDataset.clear(), então ele trabalhou.

Eu tenho esse código de trabalho em uma janela de formar,

Public Class Form1

    Private dataStuff As List(Of String)


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        DataGridView1.DataSource = Nothing

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        dataStuff = New List(Of String)

        dataStuff.Add("qwerty")
        dataStuff.Add("another")
        dataStuff.Add("...and another")

        DataGridView1.DataSource = dataStuff
    End Sub
End Class

Você deve remover a tabela de conjunto de dados se o datagrid é vincular a alguns tabela de dados. Seu Gridview serão apagados automaticamente. Não há outra forma.

[YourDatasetName].Tables.Clear()

Eu tive o mesmo problema no esclarecimento de conteúdo gridview. A fonte de dados I usada foi uma tabela de dados possuindo nenhuma coluna, e i adicionado colunas e linhas programaticamente para tabela de dados. Em seguida, ligam-se a datagridview. Eu tentei o código relacionado com gridview como gridView.Rows.Clear(), gridView.DataSource = Nothing

mas não funcionou para mim. Em seguida, tente o abaixo código relacionado com tabela de dados antes que o vincule a dataGridView cada vez.

  dtStore.Rows.Clear()
  dtStore.Columns.Clear()
  gridView.DataSource = dtStore

fina e está trabalhando, não replicação em DataGridView

1) Botão nomeou-Clear.Inside inserir tfhe seguinte código criar datagridviewer.DataSource = nada

2) No seu botão de pesquisa começar seu código pela seguinte declaração

datagridviewer.DataSource = dataset.table

NB: em vez de mesa de colocar o nome real da sua mesa ex: datagridviewer.DataSource = DataSet.client

Ao alimentar informações de uma consulta SQL em um datagridview você pode limpar o datagridview antes de recarregá-lo.

Onde eu ter definido DBDataSet como New DataTable que posso fazer uma clara. DBDataSet deve ser no início do formulário dentro do formulário Public Class

Dim dbDataset AS New DataTable

dentro do código de vocês Private Sub, lugar

dbDataSet.Clear()

Você pode ter um cenário de usuário de tal forma que você quiser manter a ligação de dados e só limpar temporariamente a DataGridView. Por exemplo, você tem o usuário clique em um recurso em um mapa para mostrar seus atributos para editar. Ele é clicar pela primeira vez, ou ele já clicou em um e editado. Quando o usuário clica no botão "Select Facility", que você gostaria de limpar o DataGridView dos dados a partir da instalação anterior (e não lançar um erro se é sua primeira seleção). Neste cenário, você pode conseguir o DataGridView limpo, adaptando o código gerado que preenche o DataGridView. Suponha que os olhares de código gerado como esta:

    Try
        Me.Fh_maintTableAdapter.FillByHydrantNumber(Me.Fh2010DataSet.fh_maint, hydrantNum)
    Catch ex As System.Exception
        System.Windows.Forms.MessageBox.Show(ex.Message)
    End Try

Estamos enchendo o DataGridView com base no número hidrante. Copie este código para o ponto onde você deseja limpar o DataGridView e substituir um valor de "hydrantNum" que você sabe que vai recuperar nenhum dado. A grade irá limpar. E quando o usuário realmente seleciona uma instalação (neste caso, um hidrante), a ligação está no local para preencher o DataGridView de forma adequada.

Se o DataGridView está vinculada a qualquer fonte de dados,

DataGridView1.DataSource = Nothing
DataGridView1.DataBind()
Dim DS As New DataSet

DS.Clear() - conjunto de dados obras claras melhor do que DataGridView.Rows.Clear() para mim:

Public Sub doQuery(sql As String)
   Try
        DS.Clear()  '<-- here
        '   - CONNECT -
        DBCon.Open()
        '   Cmd gets SQL Query
        Cmd = New OleDbCommand(sql, DBCon)
        DA = New OleDbDataAdapter(Cmd)
        DA.Fill(DS)
        '   - DISCONNECT -
        DBCon.Close()
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

Se o GridView (Diga o nome é gvArchive) está vinculada a qualquer DataSource, o seguinte irá limpá-la:

gvArchive.DataSource = Nothing

gvArchive.DataBind()

apenas escrever este

DataGridView1.DataSource = ""

Eu tive o mesmo problema: eu estava programaticamente ligação minha GridView1 para uma tabela SQL [dictonary] ou de outra [Meny], mas quando eu selecionei a segunda mesa do meu RadioButtonList1, eu estava ficando um erro (System.Web.HttpException: o campo ou propriedade com o título [título da primeira coluna da tabela selecionada anteriormente] não foi encontrado na fonte de dados selecionado.) ou seja, dizendo que as colunas de meu primeiro-selecionados tabela não pôde ser encontrado. Tudo o que eu precisava fazer era inserção:

GridView1.Columns.Clear()

antes de adicionar as colunas da tabela. Aqui vai o código completo:

Dim connectionString As String = "your-string-details"
Dim connection As New SqlConnection(connectionString)

Em seguida, vem o seu primeiro Sub:

Private Sub BindOrders()
    connection.Open()

    Dim sqlCommand As String = "SELECT * FROM [dictionary]" 
    Dim dataAdapter As New SqlDataAdapter(sqlCommand, connection)
    Dim dt As New DataTable() 
    dataAdapter.Fill(dt)

    GridView1.Columns.Clear() ' clear columns before adding new ones

    If GridView1.Columns.Count <= 0 Then
        Dim Field As New BoundField()
        Field.DataField = "id"
        Field.HeaderText = "id"
        GridView1.Columns.Add(Field)

        Field = New BoundField()
        Field.DataField = "strArHundreds"
        Field.HeaderText = "strArHundreds"
        GridView1.Columns.Add(Field)

        Field = New BoundField()
        Field.DataField = "strArTens"
        Field.HeaderText = "strArTens"
        GridView1.Columns.Add(Field)

        Field = New BoundField()
        Field.DataField = "strArSingles"
        Field.HeaderText = "strArSingles"
        GridView1.Columns.Add(Field)
    End If

    GridView1.DataSource = dt
    GridView1.DataBind()

    connection.Close()
End Sub

Em seguida, vem o segundo Sub:

Private Sub BindDocuments()
    connection.Open()

    Dim sqlCommand As String = "SELECT * FROM [meny]"
    Dim dataAdapter As New SqlDataAdapter(sqlCommand, connection)
    Dim dt As New DataTable()

    dataAdapter.Fill(dt)

    GridView1.Columns.Clear() ' clear columns before adding new ones

    If GridView1.Columns.Count <= 0 Then
        Dim Field As New BoundField
        Field = New BoundField
        Field.DataField = "id"
        Field.HeaderText = "id"
        GridView1.Columns.Add(Field)

        Field = New BoundField
        Field.DataField = "nazev"
        Field.HeaderText = "nazev"
        GridView1.Columns.Add(Field)
    End If

    GridView1.DataSource = dt
    GridView1.DataBind()

    connection.Close()
End Sub

Finalmente vem o RadioButton:

Protected Sub RadioButtonList1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RadioButtonList1.SelectedIndexChanged
    Dim index As Integer
    index = RadioButtonList1.SelectedIndex
    Select Case index
        Case 0
            BindOrders()
            Exit Select
        Case 1
            BindDocuments()
            Exit Select
    End Select
End Sub

Para a conclusão, aqui está o código para o GridView1 eo RadioButtonList1 na associado aspx.file:

<asp:RadioButtonList ID="RadioButtonList1"
    runat="server"
    AutoPostBack="True"
    OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged">
    <asp:ListItem>Obraty</asp:ListItem>
    <asp:ListItem>Dokumenty</asp:ListItem>
</asp:RadioButtonList>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
</asp:GridView>

Isso tudo funciona bem agora.

The mistake that you are making is that you seem to be using a dataset object for storing your data. Each time you use the following code to put data into your dataset you add data to the data already in your dataset.

myDataAdapter.Fill(myDataSet)

If you assign the table in your dataset to a DataGridView object in your program by the following code you will get duplicate results because you have not cleared data which is already residing in your dataset and in your dataset table.

myDataGridView.DataSource = myDataSet.Tables(0)

To avoid replicating the data you have to call clear method on your dataset object.

myDataSet.clear()

An then assign the table in your dataset to your DataGridView object. The code is like this.

myDataSet.clear()
myDataAdapter.Fill(myDataSet)
myDataGridView.DataSource = myDataSet.Tables(0)

You can try this code:

' clear previous data
DataGridView2.DataSource = Nothing
DataGridView2.DataMember = Nothing
DataGridView2.Refresh()
Try
    connection.Open()
    adapter1 = New SqlDataAdapter(sql, connection)
    ' clear data already in the dataset
    ds1.Clear()
    adapter1.Fill(ds1)
    DataGridView2.DataSource = ds1.Tables(0)
    connection.Close()
Catch ex As Exception
    MsgBox(ex.ToString)
End Try

Use this code where ever you want to implement clear datagridview command

datagridview1.datasource= nothing
datagridview1.datasource= ds
dt.clear()               'Dt as new DATATABLE
ds.clear()              'Ds as new Dataset

this code will clear the datagridview and wil stop data duplication when populating data from database.

You can do in this way:

DataGridView1.Enable = false
DataGridView1.DataSource = Nothing
DataGridView1.Enable = true

For the Clear of Grid View Data You Have to clear the dataset or Datatable

I use this Code I clear the Grid View Data even if re submit again and again it will work Example Dim con As New OleDbConnection Dim cmd As New OleDbCommand Dim da As New OleDbDataAdapter Dim dar As OleDbDataReader Dim dt As New DataTable If (con.State <> 1) Then con.Open() End If dt.Clear() 'To clear Data Every time to fresh data cmd.Connection = con cmd.CommandText = "select * from users" da.SelectCommand = cmd da.Fill(dt) DataGridView1.DataSource = dt DataGridView1.Visible = True

    cmd.Dispose()
    con.Close()

You can do that only by the following 2 lines:

DataGridView1.DataSource=Nothing
DataGridView1.DataBind()

You can also try this code if you want to clear all data in your DataGridView

DataGridView1.DataSource.Clear()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top