此行中出现错误。
datagridview1.Rows.Clear()
但这一行给出错误:
无法清除此列表。
答案 0 :(得分:21)
当我尝试清除DataGridView的DataSource之后,我也遇到了类似的问题:我将它绑定到DataTable:
DataTable DT = ... ; // fill it
datagridview1.DataSource = DT;
当我尝试使用以下代码稍后清除它的行时:
datagridview1.DataSource = null
我收到此错误:
ERROR: Object reference not set to an instance of an object
此对象引用ERROR问题已在here中解决。但我设法用这段代码解决了我自己的问题(清除DataGridView行):
DataTable DT = (DataTable)datagridview1.DataSource;
if (DT != null)
DT.Clear();
我知道很久以前就问过这个问题,但我希望我的解决方案可以解决某些问题。
答案 1 :(得分:5)
private void button_Limpar_Click(object sender, EventArgs e)
{
DataTable DT = (DataTable)dataGridView_Cidade.DataSource;
if (DT != null)
DT.Clear();
}
#endregion
答案 2 :(得分:4)
你的DataGridView
是否绑定了DataSource
,我认为这就是为什么它不允许你清除它,因为它绑定到基础DataTable
或List
。
您可以尝试将DataSource属性设置为null
datagridview1.DataSource = null;
清算
答案 3 :(得分:3)
您必须清除数据源而不是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()
答案 4 :(得分:2)
只需在活动开始时添加此行:
dgv_nameOfGridView.DataSource=false;
现在每次点击它都会删除dgv ..
答案 5 :(得分:2)
您可以使用这种简单的方法:
首先清除DataTable,然后刷新DataGridView
dataTable.Clear();
dataGridView.Refresh();
希望这个帮助
答案 6 :(得分:1)
简单的解决方案是清除DataSet。 ds.Clear();
答案 7 :(得分:0)
由于您使用的是绑定网格,您是否尝试过调用加载 功能两次并验证数据不是加倍?
由于它是绑定的,因此加载两次不应该复制数据。
http://www.vbforums.com/showpost.php?s=aa5f116586c00a2d9ea15e3727fc5c2f&p=2841192&postcount=9
答案 8 :(得分:0)
首先清除DataSource,然后清除DataGridView
VB中的
datagridview1.DataSource = Nothing
datagridview1.Rows.Clear()
希望帮助
答案 9 :(得分:0)
如果使用参数加载DataGridView,则可以向其发送空参数。这将清除您的DataGridView,而不必将其DataSet设置为null。
例如,当我填充TextBox时,我用Code加载DataGridView。
this.dataTable1TableAdapter.Fill(this.ds_MyDataSet.DataTable1, TextBox1.Text);
如果我想清除其内容,那么
this.dataTable1TableAdapter.Fill(this.ds_MyDataSet.DataTable1, "");
答案 10 :(得分:0)
这是8年后的事情。
尽管
datagridview1.DataSource = null;
对于大多数人来说是一个令人满意的答案,对我来说,这删除了我添加到设计视图中的列的所有自定义项。因此,如果我想清除行,则会显示隐藏的列。
因此,而不是清除行:
datagridview1.Rows.Clear()
清除用于设置DataGridView的DataTable或DataView。请注意,您不必检查是否为空,也不必担心对象未设置为引用错误。
所以这是我的工作方式:
//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列上。
答案 11 :(得分:0)
import os, shutil
src="U:\User\Source"
src_files = os.listdir("U:\User\Source")
dest = "U:\User\Dest"
files = ['1010*', '1011*', '1015*'] #More values
for file_name in files:
full_file_name = os.path.join(src, file_name)
if os.path.isfile(full_file_name):
shutil.copy(full_file_name, dest)
答案 12 :(得分:-1)
我遇到了与许多解决方案一样的问题。
最后,我意识到如果我们使用它的属性&#34; DGV.Datasource&#34;我们就无法清除DataGridView。因为DGV从数据集中获取数据,因此您需要清除DataTable行
Dataset.Tables["TableName"].Rows.Clear();
如果您在表格的加载中使用此功能,则需要添加条件
if (DataSet.Tables["TableName"] !=null)
Dataset.Tables["TableName"].Rows.Clear();
或者你会收到此错误
对象引用未设置为对象的实例。