DataGridView.Clear()

Hier komt het probleem.
Ik wil alle rijen uit datagridview verwijderen.
Zo voeg ik rijen toe:

private void ReadCompleteCallback(object clientHandle, Opc.Da.ItemValueResult[]     results)
{
    foreach (Opc.Da.ItemValueResult readResult in results)
    {
        dataGridView1.Invoke(new MethodInvoker(() => dataGridView1.Rows.Add(readResult.ItemName, readResult.Quality, readResult.Timestamp,readResult.Value)));        
    }
}                              

En zo wis ik gridview:

private void treeView1_SelectionsChanged(object sender, EventArgs e)
{
    dataGridView1.Rows.Clear();
    items = new Opc.Da.Item[treeView1.SelectedNodes.Count]; 
    foreach (TreeNode x in treeView1.SelectedNodes) {
        items[treeView1.SelectedNodes.IndexOf(x)] = new Opc.Da.Item();
        items[treeView1.SelectedNodes.IndexOf(x)].ItemName = x.Text; 
    }
    group.AddItems(items);
    group.Read(group.Items, 123, new Opc.Da.ReadCompleteEventHandler(ReadCompleteCallback), out req);
}

in debug zie ik dat dataGridVIew1.Rows.Count=0, maar op formulier wordt het raster niet duidelijk. wat een punt?
bij elke selectie in de boomstructuur wil ik nieuwe rijen in de tabel zien.


Antwoord 1, autoriteit 100%

Ik wed dat je alleen de datagrid hoeft te vernieuwen. Probeer dit:

dataGridView1.Rows.Clear();
dataGridView1.Refresh();

Als dit werkt… wil je misschien dit deel van je aanvraag heroverwegen.


Antwoord 2, autoriteit 30%

Als ik het me goed herinner, heb ik de eigenschap DataSource op null gezet om de DataGridView te wissen:

datagridview.DataSource = null; 

Antwoord 3, autoriteit 12%

Om de DataGridViewte wissen, schrijft u de volgende code:

dataGridView1.DataSource=null;

Antwoord 4, autoriteit 7%

In principe is onderstaande coderegel alleen nuttig in scenario’s voor gegevensbinding

datagridview.DataSource = null; 

anders wordt hieronder gebruikt wanneer geen gegevensbinding en datagridview handmatig wordt ingevuld

dataGridView1.Rows.Clear();
dataGridView1.Refresh();

Controleer dus eerst wat u aan het doen bent.


Antwoord 5, autoriteit 4%

Als u een dataGridView wilt wissen die niet is gebonden aan DataSource maar handmatig is geladen, kunt u deze eenvoudige code gebruiken:

datagridview.Rows.Clear();
datagridview.Columns.Clear();

Antwoord 6, autoriteit 3%

het enige wat u hoeft te doen is uw gegevenstabel wissen voordat u deze vult… en deze vervolgens instellen als de gegevensbron van uw dgv


Antwoord 7, autoriteit 3%

Ik heb dit stukje code, ik hoop dat het je kan helpen.

int numRows = dgbDatos.Rows.Count;    
for (int i = 0; i < numRows; i++)
{
    try
    {    
        int max = dgbDatos.Rows.Count - 1;
        dgbDatos.Rows.Remove(dgbDatos.Rows[max]);
    }
    catch (Exception exe)
    {
        MessageBox.Show("You can´t delete A row " + exe, "WTF",
        MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
}

Antwoord 8, autoriteit 2%

Als u probeert uw Data Grid View opnieuw te binden, codeer dan gewoon dit:

DataGridView1.DataSource = DataSet.Tables["TableName"];

OF

DataGridView.DataSource = DataTable;

Als u probeert uw gegevensrasterweergave te wissen, codeer dan gewoon dit:

DataGridView.DataSource = null;
DataGridView.Rows.Clear();
DataGridView.Refresh();

en voeg een methode of gebeurtenis toe om Data Grid View Again te binden onder deze regel code….


Antwoord 9

probeer RowCount in te stellen op 0 (allowuserstorows moeten false zijn), samen met clear aanroepen


Antwoord 10

Dit is een manier om het te doen:

datagridview.DataSource = null;
datagridview.Refresh();

Ik hoop dat het voor jou werkt, want het werkt voor mij.


Antwoord 11

probeer:

datagrid.DataSource = null;
datagrid.DataBind();

In principe moet u de gegevensbron uw binding aan het raster wissen.


Antwoord 12

dataGridView1.DataSource=null;

Antwoord 13

Stel de eigenschap datasource in op een lege tekenreeks en roep vervolgens de Clear-methode aan.


Antwoord 14

Ik hou er niet van om persoonlijk met de DataSource te knoeien, dus na het probleem met een IT-vriend te hebben besproken, kon ik deze manier ontdekken die eenvoudig is en geen invloed heeft op de DataSource. Ik hoop dat dit helpt!

foreach (DataGridViewRow row in dataGridView1.Rows) 
{
    foreach (DataGridViewCell cell in row.Cells)
    {
        cell.Value = "";
    }
}

Antwoord 15

Probeer deze methode

dataGridView1.DataSource = dt;
dt.Rows.Clear();

Antwoord 16

Als uw DataGridViewgeen DataSourceheeft, komt de oplossing niet door deze te manipuleren.

Je hebt altijd een emptyrij als je de eigenschap AllowUserToAddRowshebt ingesteld op true.

Zet AllowUserToAddRows = falseals je hier geen toestemming voor nodig hebt.


Antwoord 17

Ik weet dat het gek klinkt, maar ik heb dit probleem opgelost door
de eigenschap datagrid.visible wijzigen in false en vervolgens in true.
Het veroorzaakt een heel klein knipperen, maar het werkt voor mij (althans voor nu).


Antwoord 18

Probeer deze code

private void button_Click(object sender, EventArgs e) {
    if (this.dgInv.DataSource != null) {
        this.dgInv.DataSource = null;
    } else {
        this.dgInv.Rows.Clear();
    }
}

Antwoord 19

Probeer dit

DataGridView1.DataSource=ds;
ds.Clear();

Other episodes