VB.NET: Clear DataGridView

j'ai essayé

DataGridView1.DataSource=Nothing

et

DataGridView1.DataSource=Nothing
DataGridView1.Refresh()

et

DataGridView1.RefreshEdit()

aucun ne fonctionne..

j'ai écrit une méthode qui définit la source de données de DataGridView lorsqu'elle est exécutée. mais chaque fois que je l'exécute, il reproduit les données avec une nouvelle valeur et l'ajoute au contenu précédent de la DGV.. Je veux clarifier le contenu et ajouter les valeurs.. Est-ce possible?

20
demandé sur NeverHopeless 2010-02-07 18:08:54

25 réponses

si la DataGridView est liée à n'importe quelle source de données, vous devrez définirDataSource propriété Nothing.

si le DataGridView N'est lié à aucune source de données, ce code fera l'affaire:

DataGridView.Rows.Clear()
58
répondu Alex Essilfie 2010-09-16 12:55:18

Je l'utiliserais probablement...

DataGridView1.Rows.Clear()

pour effacer les lignes et puis les relier.

8
répondu Jason Punyon 2010-02-07 15:12:42

pour les cas non liés, veuillez noter que:

DataGridView.Rows.Clear()

laisse la collection de colonnes en place.

DataGridView.Columns.Clear()

..va supprimer toutes les colonnes et les lignes. Si vous utilisez le DGV non lié, et sur l'utilisation suivante les colonnes changent, le dégagement des lignes peut ne pas être adéquat. Pour le code de bibliothèque effacer toutes les colonnes avant d'ajouter des colonnes.

8
répondu rheitzman 2013-04-08 20:38:20

suivre la voie facile comme ceci

supposons que ta est un DataTable

ta.clear()
DataGridView1.DataSource = ta
DataGridView1.DataSource = Nothing
2
répondu Nal MEN 2013-02-05 10:35:14

Pouvez-vous ne pas lier le datagridview à un vide de collecte (au lieu de null). Que faire l'affaire?

1
répondu FiveTools 2010-02-07 15:13:17

pour supprimer l'ancien enregistrement dans datagridview lorsque vous recherchez un nouveau résultat,avec l'événement button_click écrivez le code suivant,

moi.DataGridview1.Source de données.claire()

ce code aidera à supprimer l'ancien enregistrement dans datagridview.

1
répondu karthikeyan 2013-05-31 16:34:12

j'ai trouvé que définir la source de données à null supprime les colonnes. C'est ce qui fonctionne pour moi:

c#:

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

VB:

Call CType(myDataGrid.DataSource, DataTable).Rows.Clear()
1
répondu Ron Rebennack 2013-09-04 19:00:21

ce code fonctionne sous windows,

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
0
répondu bristows 2010-02-07 15:22:35

Vous devriez supprimer la table de dataset si le datagrid est lié à quelque datatable. Votre Gridview sera effacé automatiquement. Pas d'autre moyen.

[YourDatasetName].Tables.Clear()
0
répondu Samiran Nath 2012-01-03 05:10:55

j'ai eu le même problème sur gridview contenu de compensation. La source de données que j'ai utilisée était un datatable n'ayant pas de colonnes, et j'ai ajouté des colonnes et des lignes programmatiques à datatable. Alors se lier à datagridview. J'ai essayé le code en rapport avec gridview comme gridView.Rows.Clear(),gridView.DataSource = Nothing

mais ça n'a pas marché pour moi. Ensuite, essayez le code ci-dessous lié à datatable avant de le lier à datagridview à chaque fois.

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

Et fonctionne très bien, pas de réplication dans DataGridView

0
répondu Shaheed Muhammad 2013-10-28 09:54:40

1) bouton create nommé Clear.À l'intérieur d'insérer tfhe code suivant datagridviewer.Source de données=rien

2) dans votre bouton de recherche, Commencez votre code par l'énoncé suivant

datagridviewer.DataSource = DataSet.la table

Nb: au lieu de table mettre le nom réel de votre table ex: datagridviewer.DataSource = DataSet.client

0
répondu Limanidt 2014-03-07 13:50:09

lors de l'alimentation d'informations à partir d'une requête SQL dans un datagridview, vous pouvez effacer le datagridview avant de le recharger.

où j'ai défini dbDataSet Comme Nouveau DataTable je peux faire un clair. dbDataSet doit être au début du formulaire dans la classe publique formulaire

Dim dbDataset AS New DataTable

dans le code de votre sous-marin privé, place

dbDataSet.Clear()
0
répondu user3741825 2014-06-15 10:35:59

Vous pouvez avoir un scénario utilisateur tel que vous voulez garder la liaison de données et seulement temporairement effacer le DataGridView. Par exemple, vous demandez à l'utilisateur de cliquer sur une installation sur une carte pour montrer ses attributs pour l'édition. Il clique pour la première fois, ou il a déjà cliqué sur un et l'a modifié. Lorsque l'utilisateur clique sur le bouton "Select Facility", vous souhaitez effacer le DataGridView des données de la facilité précédente (et ne pas jeter une erreur si c'est sa première sélection). Dans dans ce scénario, vous pouvez obtenir le propre DataGridView en adaptant le code généré qui remplit le DataGridView. Supposons que le code généré ressemble à ceci:

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

nous remplissons le DataGridView basé sur le numéro de la bouche d'incendie. Copiez ce code au point où vous voulez effacer le DataGridView et substituez une valeur pour "hydrantNum" que vous savez ne récupérera pas de données. La grille sera clair. Et lorsque l'utilisateur sélectionne une installation (dans ce cas, une borne d'incendie), la la liaison est en place pour remplir le DataGridView de manière appropriée.

0
répondu Charlie Marlin 2014-07-03 15:04:38

si la DataGridView est liée à n'importe quelle source de données,

DataGridView1.DataSource = Nothing
DataGridView1.DataBind()
0
répondu SUHAIL AG 2014-09-10 14:18:43

Mon DataGridView est également lié à une source de données et myDataGridView.Columns.Clear() a bien fonctionné mais myDataGridView.Rows.Clear() n'a PAS. Juste une pour info pour ceux qui ont essayé .Rows.

0
répondu leoraelkins 2015-06-25 12:54:16
Dim DS As New DataSet

DS.Clear() - ensemble de données clear fonctionne mieux que DataGridView.Rows.Clear() pour moi :

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
0
répondu Michał R 2015-09-04 11:03:02

Si le GridView (dites que le nom est gvArchive) est lié à tout DataSource la suite est clair:

gvArchive.DataSource = Nothing

gvArchive.DataBind()
0
répondu Neil 2016-04-11 17:55:31

Ne pas faire n'importe quoi sur DataGridView, il suffit d'effacer la source des données. J'ai essayé de compensation myDataset.clear() méthode, puis ça a marché.

0
répondu user3717731 2017-02-14 17:21:23

il suffit d'écrire ce

DataGridView1.DataSource = ""
0
répondu Areej Qasrawi 2017-03-26 10:20:59

j'ai eu le même problème: j'ai relié programmatiquement mon GridView1 à une table SQL [dictonary] ou une autre [meny] mais quand j'ai sélectionné la deuxième table de ma RadioButtonList1, j'ai eu une erreur (système.Web.HttpException: le champ ou la propriété avec le titre [le titre de la première colonne de la table précédemment sélectionnée] n'a pas été trouvé dans la source de données sélectionnée.) c'est-à-dire en disant que les colonnes de mon premier tableau sélectionné ne pouvaient pas être trouvées. Tout ce que j'avais à faire était de insérer:

GridView1.Columns.Clear()

avant d'ajouter les colonnes du tableau. Voici le code complet:

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

Puis vient votre premier Sous:

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

vient Ensuite votre deuxième Sous:

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

vient Enfin de votre 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

pour compléter, voici le code pour le GridView1 et le RadioButtonList1 dans l'aspx associé.fichier:

<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>

tout Cela fonctionne bien maintenant.

0
répondu Barbora 2017-09-20 12:57:47

l'erreur que vous faites est que vous semblez utiliser un objet dataset pour stocker vos données. Chaque fois que vous utilisez le code suivant pour mettre des données dans votre ensemble de données, vous ajoutez des données aux données déjà dans votre ensemble de données.

myDataAdapter.Fill(myDataSet)

si vous assignez la table dans votre ensemble de données à un objet DataGridView dans votre programme par le code suivant, vous obtiendrez des résultats dupliqués parce que vous n'avez pas effacé les données qui résident déjà dans votre ensemble de données et dans votre ensemble de données table.

myDataGridView.DataSource = myDataSet.Tables(0)

pour éviter de répliquer les données, vous devez appeler la méthode clear sur votre objet dataset.

myDataSet.clear()

puis assignez la table dans votre ensemble de données à votre objet DataGridView. Le code est comme ça.

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

Vous pouvez essayer ce 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
0
répondu Meisam Rasouli 2017-12-22 19:45:51

Vous pouvez le faire de cette façon:

DataGridView1.Enable = false
DataGridView1.DataSource = Nothing
DataGridView1.Enable = true
-1
répondu wertyk 2012-03-20 15:47:28

pour les données Clear of Grid View vous devez effacer l'ensemble de données ou Datatable

j'utilise ce Code j'efface les données de vue de grille même si re soumettre encore et encore il fonctionnera Exemple Dim con As New OleDbConnection Le cmd Dim en tant que nouveau Command Dim da en tant que nouvel OleDbDataAdapter Dim dar As Oldbdatareader Dim dt Comme Nouveau DataTable Si (con.État <> 1) Alors con.Ouvrir() Fin De Si dt.Clear () ' pour effacer les données à chaque fois à des données fraîches cmd.Connexion = con cmd.CommandText = " select * from users" da.SelectCommand = cmd da.De remplissage(dt) DataGridView1.Source de données = dt DataGridView1.Visible = True

    cmd.Dispose()
    con.Close()
-1
répondu user2955140 2014-02-25 04:52:40

Vous pouvez le faire seulement par les 2 lignes suivantes:

DataGridView1.DataSource=Nothing
DataGridView1.DataBind()
-1
répondu Peter Mankge 2016-06-07 13:16:19

Vous pouvez aussi essayer ce code si vous voulez effacer toutes les données de votre DataGridView

DataGridView1.DataSource.Clear()
-1
répondu Dash_25 2018-03-07 03:51:03