溫馨提示×

DataGridView怎樣實現(xiàn)數(shù)據(jù)過濾

小樊
82
2024-10-12 18:19:19
欄目: 編程語言

在WinForms應用程序中,使用DataGridView控件實現(xiàn)數(shù)據(jù)過濾的方法如下:

  1. 首先,為DataGridView控件設置數(shù)據(jù)源。這通常是通過將DataTable或其他數(shù)據(jù)源對象綁定到DataGridView來完成的。例如:
// 創(chuàng)建一個DataTable
DataTable dataTable = new DataTable();
dataTable.Columns.Add("ID", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Rows.Add(1, "Alice");
dataTable.Rows.Add(2, "Bob");
dataTable.Rows.Add(3, "Charlie");

// 將DataTable綁定到DataGridView
dataGridView1.DataSource = dataTable;
  1. 接下來,創(chuàng)建一個文本框(TextBox),用于輸入過濾條件。為文本框添加一個事件處理程序,以便在用戶輸入時更新DataGridView的過濾數(shù)據(jù)。例如:
// 創(chuàng)建一個文本框
TextBox filterTextBox = new TextBox();
filterTextBox.TextChanged += FilterDataGridView;

// 將文本框添加到窗體上
this.Controls.Add(filterTextBox);
  1. 實現(xiàn)FilterDataGridView事件處理程序。在這個方法中,你需要根據(jù)用戶輸入的過濾條件來篩選數(shù)據(jù),并更新DataGridView的顯示內(nèi)容。例如:
private void FilterDataGridView(object sender, EventArgs e)
{
    // 獲取過濾條件
    string filterText = filterTextBox.Text.Trim();

    // 創(chuàng)建一個新的DataTable,用于存儲過濾后的數(shù)據(jù)
    DataTable filteredTable = dataTable.Clone();

    // 遍歷原始數(shù)據(jù)表中的所有行
    foreach (DataRow row in dataTable.Rows)
    {
        // 如果當前行的Name列包含過濾條件,則將該行添加到新的DataTable中
        if (row["Name"].ToString().Contains(filterText))
        {
            filteredTable.ImportRow(row);
        }
    }

    // 將新的DataTable設置為DataGridView的數(shù)據(jù)源
    dataGridView1.DataSource = filteredTable;
}

現(xiàn)在,當用戶在文本框中輸入過濾條件時,DataGridView將根據(jù)條件自動更新顯示的數(shù)據(jù)。

0