Как я могу очистить строки в DataGridView с C #? - PullRequest
11 голосов
/ 31 мая 2011

Ошибка в этой строке.

datagridview1.Rows.Clear()

но эта строка выдает ошибку:

Невозможно очистить этот список.

Ответы [ 11 ]

21 голосов
/ 15 января 2012

У меня также была похожая проблема, когда я пытался очистить DataSource от DataGridView после того, как я связал его с DataTable с помощью:

DataTable DT = ... ; // fill it
datagridview1.DataSource = DT;

, когда я пытаюсь очистить его строки позже с помощью следующего кода:

datagridview1.DataSource = null

Я получаю эту ошибку:

ERROR: Object reference not set to an instance of an object

Эта ошибка ссылки на объект уже решена в здесь . Но мне удалось решить мою собственную проблему (очистка строк DataGridView) с помощью этого кода:

DataTable DT = (DataTable)datagridview1.DataSource;
if (DT != null) 
    DT.Clear();

Я знаю, что этот вопрос задавался очень давно, но я надеюсь, что мое решение решит чьи-то проблемы.

5 голосов
/ 07 июля 2012
private void button_Limpar_Click(object sender, EventArgs e)
{
    DataTable DT = (DataTable)dataGridView_Cidade.DataSource;
    if (DT != null)
        DT.Clear();
}
#endregion
4 голосов
/ 31 мая 2011

Ваш DataGridView связан с DataSource, я думаю, поэтому он не позволяет вам очистить его, поскольку он связан с базовым DataTable или List.

вы можете попробовать установить для свойства DataSource значение null

datagridview1.DataSource = null; для очистки

3 голосов
/ 01 октября 2015

Вы должны очистить источник данных, а не строки таблицы данных.

datagridview1.DataSource = null;

Другой способ -

1) Не назначать прямой источник данных для gridview. добавить строки из таблицы данных в gridview

      foreach (DataRow row in dataTable.Rows)
        {
            var dataGridRow = new DataGridViewRow();
            dataGridRow.CreateCells(datagridview1);

            for (int i = 0; i < row.ItemArray.Length; i++)
            {
                dataGridRow.Cells[i].Value = row.ItemArray[i];
            }

            datagridview1.Rows.Add(dataGridRow);
        }

затем используйте

datagridview1.Rows.Clear()
2 голосов
/ 13 июня 2013

Вы можете использовать этот простой метод:

Сначала очистите DataTable, а затем обновите DataGridView

dataTable.Clear();
dataGridView.Refresh();

Надеюсь, что эта помощь

2 голосов
/ 07 сентября 2012

Просто добавьте эту строку в начале вашего мероприятия:

dgv_nameOfGridView.DataSource=false;

Теперь каждый раз, когда вы нажимаете, он стирает dgv ..

1 голос
/ 19 июня 2015

Простое решение - очистить DataSet.ds.Clear (); * * тысяча один

0 голосов
/ 06 июля 2017

Если вы загрузите DataGridView с параметром, вы можете отправить ему пустой параметр. Это очистит ваш DataGridView без необходимости устанавливать для его DataSet значение null.

Например, я загружаю свой DataGridView с кодом при заполнении текстового поля.

this.dataTable1TableAdapter.Fill(this.ds_MyDataSet.DataTable1, TextBox1.Text);

Если я хочу очистить его содержимое, тогда

this.dataTable1TableAdapter.Fill(this.ds_MyDataSet.DataTable1, "");
0 голосов
/ 03 марта 2015

У меня была такая же проблема, которую я пытался со многими решениями.

В итоге я понял, что мы не можем очистить DataGridView, если мы используем его свойство "DGV.Datasource", потому что DGV берет свои данные из набора данных, поэтому вам нужно очистить строки DataTable

Dataset.Tables["TableName"].Rows.Clear();

Если вы используете эту функцию в загрузке формы, вам нужно добавить условие

if (DataSet.Tables["TableName"] !=null)    
    Dataset.Tables["TableName"].Rows.Clear();

или вы получите эту ошибку

Ссылка на объект не установлена ​​для экземпляра объекта.

0 голосов
/ 11 октября 2014

Сначала очистите DataSource, а затем очистите DataGridView

в VB

 datagridview1.DataSource = Nothing
 datagridview1.Rows.Clear()

надеюсь, что помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...