.
在 C# 中的 DataGridVew 有點類似資料庫中表格的概念
可以依照不同屬性存入相對應的資料,DataGridVew 本身也提供欄位上色
欄位篩選的功能,本篇主要示範如何篩選 DataGridVew 內資料功能
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.Threading;
-
- namespace datatable_test
- {
- public partial class Form1 : Form
- {
-
- public DataTable _tb = new DataTable("table");
- public DataRow _NewRow;
-
- public DataTable _tb2 = new DataTable("table2");
- public DataRow _NewRow2;
-
- private Random _rand = new Random(Guid.NewGuid().GetHashCode());
-
- public Form1()
- {
- InitializeComponent();
- }
-
- private void Form1_Load(object sender, EventArgs e)
- {
- //-----------------------------表格欄位製作
- DataColumn colItem0 = new DataColumn("No", Type.GetType
- ("System.String"));
- _tb.Columns.Add(colItem0);
- DataColumn colItem = new DataColumn("time", Type.GetTyp
- e("System.String"));
- _tb.Columns.Add(colItem);
- DataColumn colItem2 = new DataColumn("H1", Type.GetType
- ("System.String"));
- _tb.Columns.Add(colItem2);
- DataColumn colItem3 = new DataColumn("T1", Type.GetType
- ("System.String"));
- _tb.Columns.Add(colItem3);
- DataColumn colItem4 = new DataColumn("H2", Type.GetType
- ("System.String"));
- _tb.Columns.Add(colItem4);
- DataColumn colItem5 = new DataColumn("T2", Type.GetType
- ("System.String"));
- _tb.Columns.Add(colItem5);
- DataColumn colItem6 = new DataColumn("H3", Type.GetType
- ("System.String"));
- _tb.Columns.Add(colItem6);
- DataColumn colItem7 = new DataColumn("T3", Type.GetType
- ("System.String"));
- _tb.Columns.Add(colItem7);
- DataColumn colItem8 = new DataColumn("H4", Type.GetType
- ("System.String"));
- _tb.Columns.Add(colItem8);
- DataColumn colItem9 = new DataColumn("T4", Type.GetType
- ("System.String"));
- _tb.Columns.Add(colItem9);
- DataColumn colItem10 = new DataColumn("H5", Type.GetTyp
- e("System.String"));
- _tb.Columns.Add(colItem10);
- DataColumn colItem11 = new DataColumn("T5", Type.GetTyp
- e("System.String"));
- _tb.Columns.Add(colItem11);
-
- _tb.Clear(); //清空表格
- _tb.Rows.Clear();//清空資料
- dataGridView1.DataSource = null; //清除數據來源
- _tb.AcceptChanges();
- dataGridView1.DefaultCellStyle.Font = new Font("細明體", 10,
- FontStyle.Bold);
- dataGridView1.AutoResizeColumns(DataGridViewAutoSizeCol
- umnsMode.AllCells);
-
- dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSiz
- eColumnsMode.Fill;
- dataGridView1.DataSource = _tb;
-
-
- //-----------table2
- colItem0 = new DataColumn("No", Type.GetType("System.String"));
- _tb2.Columns.Add(colItem0);
- colItem = new DataColumn("time", Type.GetType("System.String"));
- _tb2.Columns.Add(colItem);
- colItem2 = new DataColumn("H1", Type.GetType("System.String"));
- _tb2.Columns.Add(colItem2);
- colItem3 = new DataColumn("T1", Type.GetType("System.String"));
- _tb2.Columns.Add(colItem3);
- colItem4 = new DataColumn("H2", Type.GetType("System.String"));
- _tb2.Columns.Add(colItem4);
- colItem5 = new DataColumn("T2", Type.GetType("System.String"));
- _tb2.Columns.Add(colItem5);
- colItem6 = new DataColumn("H3", Type.GetType("System.String"));
- _tb2.Columns.Add(colItem6);
- colItem7 = new DataColumn("T3", Type.GetType("System.String"));
- _tb2.Columns.Add(colItem7);
- colItem8 = new DataColumn("H4", Type.GetType("System.String"));
- _tb2.Columns.Add(colItem8);
- colItem9 = new DataColumn("T4", Type.GetType("System.String"));
- _tb2.Columns.Add(colItem9);
- colItem10 = new DataColumn("H5", Type.GetType("System.String"));
- _tb2.Columns.Add(colItem10);
- colItem11 = new DataColumn("T5", Type.GetType("System.String"));
- _tb2.Columns.Add(colItem11);
-
- for(int i = 1 ; i < 10 ; i++)
- {
- _NewRow = _tb.NewRow();
- dataGridView1.Columns[1].Width = 300;
- _NewRow["No"] = i;
- _NewRow["time"] = DateTime.Now.ToString("yyyy/MM/ddHH:mm:ss");
- _NewRow["H1"] = _rand.Next(0,100);
- _NewRow["T1"] = _rand.Next(0, 40);
- _NewRow["H2"] = _rand.Next(0, 100);
- _NewRow["T2"] = _rand.Next(0, 40);
- _NewRow["H3"] = _rand.Next(0, 100);
- _NewRow["T3"] = _rand.Next(0, 40);
- _NewRow["H4"] = _rand.Next(0, 100);
- _NewRow["T4"] = _rand.Next(0, 40);
- _NewRow["H5"] = _rand.Next(0, 100);
- _NewRow["T5"] = _rand.Next(0, 40);
-
- _tb.Rows.Add(_NewRow);
- }
- }
-
- private void button1_Click(object sender, EventArgs e)
- {
-
- DataRow[] select_result = _tb.Select(textBox1.Text);
-
- _tb2.Clear(); //清空表格
- _tb2.Rows.Clear();//清空資料
- dataGridView2.DataSource = null; //清除數據來源
- _tb2.AcceptChanges();
- dataGridView2.DefaultCellStyle.Font = new Font("細明
- 體", 10, FontStyle.Bold);
- dataGridView2.AutoResizeColumns(DataGridViewAutoSizeCol
- umnsMode.AllCells);
-
- dataGridView2.AutoSizeColumnsMode = DataGridViewAutoSiz
- eColumnsMode.Fill;
- dataGridView2.DataSource = _tb2;
-
- textBox2.Text = "";
-
- for(int p = 0 ; p < select_result.Length ; p++)
- {
- _NewRow2 = _tb2.NewRow(); //開新的一列
-
- for(int i = 0 ; i < select_result[p].ItemArray.Length ; i++)
- {
- textBox2.Text += select_result[p].ItemArray[i] + " ";
-
- dataGridView2.Columns[1].Width = 300;
- //指定第二列 列寬
-
- _NewRow2[_tb2.Columns[i].ToString()] = select_result[p].ItemArray[i];
- //依照列標題順序放入資料
-
- }
-
- _tb2.Rows.Add(_NewRow2); //寫入列資料
- }
- }
- }
- }
以下測試下任意幾種指令的結果,篩選方式跟SQL語法有點相似
執行結果
篩選 T1 > 30 且 H2 > 50 的資料
篩選編號 等於 4 的資料
篩選編號等於 4 或 6 或 8 的資料
篩選 H2 字首為 9 的資料