簡體   English   中英

如何刪除表單加載上的所有DataGridView行?

[英]How to remove all DataGridView rows on form load?

如何刪除除列標題以外的所有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);
    }
}

這對我有用:

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();

我用

dataGridViewResult.Rows.Clear();

清除每一行而不刪除列。

對於同樣的問題,我嘗試了幾種方法,但無法成功。 如其中一個答案所述:

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()方法是正確的,最好的方法。

//這應該有用

int rowCount = dataGridView1.Rows.Count;

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

你的解決方案沒有用,因為每當for循環檢查條件i < rowCount ,由於dataGridView1.Rows.RemoveAt(i)rowCount已經減少了1。 因此只有一半的行會被刪除。

while(dataGridView1.Rows.Count >1) { dataGridView1.Rows.RemoveAt(0); }

使行和列計數為零並刷新數據集。

dataGrid.Rows.Count = 0; 

dataGrid.Refresh();

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM