Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在表单加载时删除所有DataGridView行?_C#_.net_Winforms_Datagridview - Fatal编程技术网

C# 如何在表单加载时删除所有DataGridView行?

C# 如何在表单加载时删除所有DataGridView行?,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,如何删除除列标题之外的所有datagridview行 我试过: dataGridView1.Rows.clear(); 但它不起作用 我尝试在行上循环并使用RemoveAt方法,但它不会删除所有行: private void Form5_Load(object sender, EventArgs e) { dataGridView1.AutoGenerateColumns = true; SqlConnection con = new SqlConnection(

如何删除除列标题之外的所有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);
    }
}

如果网格绑定到DataTable或其他数据源,则需要清除它,而不是网格,否则Rows.clear方法是正确且最好的方法。

需要清除数据源或DataTable,而不是datagridview

dataGridView.DataSource = null;
dataGridView.Refresh();

这对我很有用:

do
{
   foreach (DataGridViewRow row in dataGridViewError.Rows)
   {
      try
      {
        dataGridViewError.Rows.Remove(row);
      }
      catch (Exception) { }
   }
} while (dataGridViewError.Rows.Count > 1);

对于同一个问题,我尝试了几种方法,但都没有成功。正如其中一个答案所说:

for(int i = 0; i < myDataGridView.Rows.Count; i++)
{
    myDataGridView.Rows.RemoveAt(i)
}
我用

在不删除列的情况下清除每行。

//应该可以这样做

int rowCount = dtg.Rows.Count;
        for (int i = rowCount - 1; i >= 0; i--)
        {
            DataGridViewRow dr = dtg.Rows[i];
            dtg.Rows.Remove(dr);
        }
int rowCount = dataGridView1.Rows.Count;

for (int i = 0; i < rowCount; i++)
{
    dataGridView1.Rows.RemoveAt(0);
}
您的解决方案不起作用,因为每次for循环检查条件i而DataGridView1.rows.Count>1 { dataGridView1.Rows.RemoveAt0;
}使行和列计数为零并刷新数据集

dataGrid.Rows.Count = 0; 

dataGrid.Refresh

定义但不起作用,会发生什么?int i=0的可能重复;i0时进行此操作。我的datagridview是手动填充的,而不是datatable或其他源
int rowCount = dtg.Rows.Count;
        for (int i = rowCount - 1; i >= 0; i--)
        {
            DataGridViewRow dr = dtg.Rows[i];
            dtg.Rows.Remove(dr);
        }
int rowCount = dataGridView1.Rows.Count;

for (int i = 0; i < rowCount; i++)
{
    dataGridView1.Rows.RemoveAt(0);
}
dataGrid.Rows.Count = 0;