Следующая ошибка в этой строке.
datagridview1.Rows.Clear()
но эта строка дает ошибку:
Не удается удалить этот список.
Следующая ошибка в этой строке.
datagridview1.Rows.Clear()
но эта строка дает ошибку:
Не удается удалить этот список.
У меня также была аналогичная проблема, когда я пытаюсь очистить DataSource DataGridView после того, как привязал его к DataTable с помощью:
DataTable DT = ... ; // fill it
datagridview1.DataSource = DT;
когда я попытаюсь очистить строки позже с помощью следующего кода:
datagridview1.DataSource = null
Я получаю эту ошибку:
ERROR: Object reference not set to an instance of an object
Эта объектная ссылка Проблема ERROR уже решена в здесь. Но мне удалось решить мою собственную проблему (очистка строк DataGridView) с помощью этого кода:
DataTable DT = (DataTable)datagridview1.DataSource;
if (DT != null)
DT.Clear();
Я знаю, что этот вопрос был задан очень давно, но я надеюсь, что мое решение решит проблемы.
private void button_Limpar_Click(object sender, EventArgs e)
{
DataTable DT = (DataTable)dataGridView_Cidade.DataSource;
if (DT != null)
DT.Clear();
}
#endregion
Является ли ваш DataGridView
привязанным к DataSource
, я думаю, поэтому он не позволяет вам очистить его с момента привязки к базовому DataTable
или List
.
вы можете попробовать установить для свойства DataSource значение null
datagridview1.DataSource = null;
для очистки
Вам нужно очистить данные, а не строки datagridview.
datagridview1.DataSource = null;
Другой способ -
1) Не назначайте прямой источник данных gridview. добавлять строки из datatable в 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()
Просто добавьте эту строку в начале вашего мероприятия:
dgv_nameOfGridView.DataSource=false;
Теперь каждый раз, когда вы нажимаете, он удаляет dgv..
Вы можете использовать этот простой метод:
Сначала очистите свой DataTable, а затем обновите DataGridView
dataTable.Clear();
dataGridView.Refresh();
Надеемся на эту помощь
Простое решение - очистить DataSet. ds.Clear();
Поскольку вы используете связанную сетку, попробовали ли вы вызвать свою загрузку дважды и проверьте, что данные не удваиваются?
Поскольку он связан, загрузка дважды не должна дублировать данные.
http://www.vbforums.com/showpost.php?s=aa5f116586c00a2d9ea15e3727fc5c2f&p=2841192&postcount=9
Сначала очистите DataSource, а затем очистите DataGridView
в VB
datagridview1.DataSource = Nothing
datagridview1.Rows.Clear()
помощь надежда
Если вы загрузите DataGridView с помощью параметра, вы можете отправить ему пустой параметр. Это очистит ваш DataGridView без необходимости устанавливать его DataSet в значение null.
Например, я загружаю DataGridView с кодом, когда я заполняю TextBox.
this.dataTable1TableAdapter.Fill(this.ds_MyDataSet.DataTable1, TextBox1.Text);
Если я хочу очистить его содержимое, то
this.dataTable1TableAdapter.Fill(this.ds_MyDataSet.DataTable1, "");
Вот и мы 8 лет спустя.
Хотя
datagridview1.DataSource = null;
это удовлетворительный ответ для большинства, для меня это удаляет все настройки, которые я добавил в столбцы в режиме конструктора. Таким образом, скрытые столбцы появляются, если я хочу очистить строки.
Так что вместо того, чтобы убирать строки:
datagridview1.Rows.Clear()
Удалите DataTable или DataView, которые вы использовали для настройки DataGridView.
Итак, вот как я это сделал:
//Populate the datagridview
DataTable _DT = new DataTable();
BindingSource _BS = new BindingSource();
//Initially fill up your datatable with stuff
//You can call this method again if data needed to be changed
public void fillDT(int id) {
_DT = fillUpDataTableWithStuffFromDB(id);
_BS.DataSource = _DT.DefaultView;
datagridview1.DataSource = _BS;
_BS.ResetBindings(false);
}
//You can use this method to mimic the functionality above
//But rather fetching data, just clear out the datatable and pass it in
public void clearDT() {
_DT.Clear();
datagridview1.DataSource = _DT.DefaultView;
datagridview1.Refresh();
}
Как вы можете видеть выше, я просто очистил таблицу данных и передал ее в таблицу данных. Это сохранило все мои свойства, которые я установил в столбце datagridview.
У меня была та же проблема, которую я пробовал со многими решениями.
В конце я понял, что мы не можем очистить DataGridView, если мы используем его свойство "DGV.Datasource", потому что DGV берет свои данные из набора данных, поэтому вам нужно очистить строки DataTable
Dataset.Tables["TableName"].Rows.Clear();
Если вы используете эту функцию в Load of the Form, вам нужно добавить условие
if (DataSet.Tables["TableName"] !=null)
Dataset.Tables["TableName"].Rows.Clear();
или вы получите эту ошибку
Ссылка на объект не установлена в экземпляр объекта.