如何在表单加载时删除所有DataGridView行
本文关键字:DataGridView 删除 表单 加载 | 更新日期: 2023-09-27 18:19:53
如何删除除列标题之外的所有datagridview行?
我试过了:
dataGridView1.Rows.clear();
但它不起作用。
我尝试在行上循环并使用RemoveAt
方法,但它并没有删除所有行:
private void Form5_Load(object sender, EventArgs e)
{
dataGridView1.AutoGenerateColumns = true;
SqlConnection con = new SqlConnection(@"Data Source=.'myserver;Initial Catalog=test;Integrated Security=True");
adapter = new SqlDataAdapter("SELECT id as [#], description as [Description], unit as [Unit], amount as [Amount], unitPrice as [Unit Price], total as [Total] FROM tbl_poMaterials", con);
adapter.SelectCommand.CommandType = CommandType.Text;
DataTable tb = new DataTable();
adapter.Fill(tb);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
dataGridView1.DataSource = tb;
dataGridView1.Columns[0].Width = 30;
dataGridView1.Columns[0].ReadOnly = true;
dataGridView1.Columns[1].Width = 660;
for (int i = 0; i < tb.Rows.Count; i++)
{
tb.Rows.RemoveAt(i);
}
}
我使用
dataGridViewResult.Rows.Clear();
清除每一行而不删除列。
这对我有效:
do
{
foreach (DataGridViewRow row in dataGridViewError.Rows)
{
try
{
dataGridViewError.Rows.Remove(row);
}
catch (Exception) { }
}
} while (dataGridViewError.Rows.Count > 1);
您需要清除DataSource或DataTable,而不是datagridview。
dataGridView.DataSource = null;
dataGridView.Refresh();
或
dataTable.Clear();
dataGridView.Refresh();
对于同一个问题,我尝试了几种方法,但都没有成功。正如在其中一个答案中所说:
for(int i = 0; i < myDataGridView.Rows.Count; i++)
{
myDataGridView.Rows.RemoveAt(i)
}
将实际删除该行,但下一行将移动到上一行!因此,上面的方法删除了一半的行数!因此,您需要重复该操作,直到它变为零!
或者,尝试从最后一行删除到第一行。它有效!
for(int i = myDataGridView.Rows.Count - 1; i >= 0; i--)
{
myDataGridView.Rows.RemoveAt(i);
}
如果您的网格绑定到DataTable或其他DataSource,则需要清除它,而不是网格,否则Rows.clear()方法是正确且最好的方法。
使行和列计数为零并刷新数据集。
dataGrid.Rows.Count = 0;
dataGrid.Refresh();
//这应该适用于
int rowCount = dataGridView1.Rows.Count;
for (int i = 0; i < rowCount; i++)
{
dataGridView1.Rows.RemoveAt(0);
}
您的解决方案不起作用,因为每次for循环检查条件i < rowCount
时,rowCount
都会因为dataGridView1.Rows.RemoveAt(i)
而减少一。因此,只有一半的行会被删除。
while(dataGridView1.Rows.Count >1)
{
dataGridView1.Rows.RemoveAt(0);
}
int rowCount = dtg.Rows.Count;
for (int i = rowCount - 1; i >= 0; i--)
{
DataGridViewRow dr = dtg.Rows[i];
dtg.Rows.Remove(dr);
}
如果这很明显,很抱歉,但"清除";在给出的例子中没有大写(应该是)。这应该会引发一个构建错误并阻止你运行它,但由于不清楚你有什么错误,这可能就是发生的事情