Подтвердить что ты не робот

DataGridView.Clear()

Здесь возникает проблема. Я хочу удалить все строки из datagridview. Это как добавить строки:

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)));        
    }
}                              

И его как я вижу 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);
}

в отладке я вижу, что dataGridVIew1.Rows.Count = 0, но по форме сетка не становится ясной. какой смысл? для каждого выбора в дереве я хочу видеть новые строки в таблице.

4b9b3361

Ответ 1

Я уверен, вам просто нужно обновить datagrid. Попробуйте следующее:

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

Если это работает... вы можете захотеть переосмыслить эту часть своего приложения.

Ответ 2

Если я правильно помню, я установил для свойства DataSource значение null, чтобы очистить DataGridView:

datagridview.DataSource = null;

Ответ 3

Чтобы очистить datagridview, напишите следующий код:

dataGridView1.DataSource=null;

Ответ 4

В основном ниже строки кода полезно только в сценариях привязки данных

datagridview.DataSource = null; 

в противном случае используется ниже, если связь данных и datagridview не заполняется вручную

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

Итак, сначала проверьте, что вы делаете.

Ответ 5

Если вы хотите очистить dataGridView, не привязанный к DataSource, но загруженный вручную, вы можете использовать этот простой код:

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

Ответ 6

все, что вам нужно сделать, - очистить свой datatable, прежде чем вы его заполняете... а затем просто установите его как dgv datasource

Ответ 7

У меня есть эта часть кода, я надеюсь, что это может помочь.

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);
    }
}

Ответ 8

попробуйте установить RowCount в 0 (allowuserstorows должно быть ложным), а также вызов clear

Ответ 9

попробовать:

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

В основном вам нужно очистить источник данных, привязанный к сетке.

Ответ 10

dataGridView1.DataSource=null;

Ответ 11

Задайте для свойства datasource пустую строку, затем вызовите метод Clear.

Ответ 12

Это один из способов сделать это:

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

Я надеюсь, что это сработает для вас, потому что оно работает для меня.

Ответ 13

Просто, если вы пытаетесь пересоздать свой вид сетки данных, просто введите код:

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

ИЛИ

DataGridView.DataSource = DataTable;

else, если вы попытаетесь очистить свой вид сетки данных, просто введите код:

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

и добавьте любой метод или событие, чтобы связать вид сетки данных снова под этой строкой кода....

Ответ 14

Попробуйте этот код

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

Ответ 15

Попробуйте этот метод

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

Ответ 16

Попробуй это

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

Ответ 17

Если ваш DataGridView не имеет никакого DataSource решение не приходит, манипулируя его.

У вас всегда будет empty строка, если для свойства AllowUserToAddRows установлено значение true.

Установите AllowUserToAddRows = false если вам не нужно разрешать это.

Ответ 18

Мне не нравится возиться с DataSource лично, поэтому, обсудив проблему с другом ИТ, я смог обнаружить этот способ, который прост и не влияет на DataSource. Надеюсь, это поможет!

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