C# DataGridView.Clear()
麻烦来了。 我想从datagridview中删除所有行。 以下是我添加行的方式:C# DataGridView.Clear(),c#,.net,C#,.net,麻烦来了。 我想从datagridview中删除所有行。 以下是我添加行的方式: private void ReadCompleteCallback(object clientHandle, Opc.Da.ItemValueResult[] results) { foreach (Opc.Da.ItemValueResult readResult in results) { dataGridView1.Invoke(new MethodInvoker(()
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,但在窗体上,网格并没有变得清晰。什么意思?
在树中的每个选择上,我希望在表中看到新行。尝试将RowCount设置为0(allowuserstorows应为false),同时调用clear我打赌您只需要刷新数据网格。试试这个:
dataGridView1.Rows.Clear();
dataGridView1.Refresh();
如果这有效的话。。。您可能需要重新考虑应用程序的这一部分。如果我没记错,我将DataSource属性设置为null以清除DataGridView:
datagridview.DataSource = null;
将datasource属性设置为空字符串,然后调用Clear方法。要清除
datagridview
请编写以下代码:
dataGridView1.DataSource=null;
这是一种方法:
datagridview.DataSource = null;
datagridview.Refresh();
我希望它对您有效,因为它对我有效。在填充数据表之前,您需要做的就是清除数据表。。。然后将其设置为dgv的数据源我个人不喜欢弄乱数据源,因此在与it朋友讨论该问题后,我能够发现这种简单且不影响数据源的方法。希望这有帮助
foreach (DataGridViewRow row in dataGridView1.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
cell.Value = "";
}
}
尝试:
基本上,您需要清除与网格绑定的数据源。基本上,代码行下面的代码只在数据绑定场景中有用
datagridview.DataSource = null;
否则,在没有数据绑定且手动填充datagridview时,将使用以下选项
dataGridView1.Rows.Clear();
dataGridView1.Refresh();
所以,首先检查你在做什么 如果您试图重新绑定数据网格视图,只需编写以下代码:
DataGridView1.DataSource = DataSet.Tables["TableName"];
或
否则,如果您试图清除数据网格视图,只需编写以下代码:
DataGridView.DataSource = null;
DataGridView.Rows.Clear();
DataGridView.Refresh();
并在此代码行下方添加任何方法或事件以再次绑定数据网格视图 试试这段代码
private void button_Click(object sender, EventArgs e) {
if (this.dgInv.DataSource != null) {
this.dgInv.DataSource = null;
} else {
this.dgInv.Rows.Clear();
}
}
如果要清除未绑定到DataSource但手动加载的dataGridView,可以使用以下简单代码:
datagridview.Rows.Clear();
datagridview.Columns.Clear();
试试这个方法
dataGridView1.DataSource = dt;
dt.Rows.Clear();
我有这段代码,我希望它能帮助你
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);
}
}
int numRows=dgbDatos.Rows.Count;
对于(int i=0;i
试试这个
DataGridView1.DataSource=ds;
ds.Clear();
如果您的
DataGridView
没有任何DataSource
,则解决方案不会通过操纵它来实现
如果将allowUserToAddress
属性设置为true
,则始终会有一个空的
行
如果您不需要许可,请将
allowUserToAddress=false
放入。我知道这听起来很疯狂,但我通过
将datagrid.visible属性更改为false,然后更改为true。
它会引起一个很小的眨眼,但对我来说很有效(至少现在是这样)。这似乎是一个非常奇怪的时间来清除它,我希望这与问题有关。出于兴趣,你想在这里做什么?好吧,我明白了,现在更有意义了。试着想想为什么会这样。为什么不使用带有BindingList的数据源呢?嗯。。我没有数据源。数据取自opc服务器。但这是个好主意,我会尽力做到的。它说行数必须至少为1。但是,即使将其设置为1-也无济于事。这不是所有其他答案都在尖叫的地方吗?不完全是。如果数据源绑定到DataTable,则只需调用DataTable.Clear();将在一个简单的步骤中完成工作。此答案假设使用数据绑定。如果手动操作栅格,则此操作将不起作用。需要对手动插入的行执行Rows.Clear()和Refresh()。请参阅NitroxDM的答案。此答案假设使用数据绑定。如果手动操作栅格,则此操作将不起作用。需要对手动插入的行执行Rows.Clear()和Refresh()。请参阅NitroxDM的答案。此答案假设使用数据绑定。如果手动操作栅格,则此操作将不起作用。需要对手动插入的行执行Rows.Clear()和Refresh()。请参阅NitroxDM的答案。迭代很慢。请尝试调用行的collection Clear()方法。
dataGridView1.DataSource=null;
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);
}
}
DataGridView1.DataSource=ds;
ds.Clear();