小屋創作

日誌2018-11-16 11:28

C# DataGridVew 篩選功能

作者:貓貓風 ฅ●ω●ฅ

.



















在 C# 中的 DataGridVew  有點類似資料庫中表格的概念

可以依照不同屬性存入相對應的資料,DataGridVew  本身也提供欄位上色

欄位篩選的功能,本篇主要示範如何篩選  DataGridVew 內資料功能



  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Linq;  
  7. using System.Text;  
  8. using System.Windows.Forms;  
  9. using System.Threading;  
  10.   
  11. namespace datatable_test  
  12. {  
  13.     public partial class Form1 : Form  
  14.     {  
  15.   
  16.         public DataTable _tb = new DataTable("table");  
  17.         public DataRow _NewRow;  
  18.   
  19.         public DataTable _tb2 = new DataTable("table2");  
  20.         public DataRow _NewRow2;  
  21.   
  22.         private Random _rand = new Random(Guid.NewGuid().GetHashCode());  
  23.   
  24.         public Form1()  
  25.         {  
  26.             InitializeComponent();  
  27.         }  
  28.   
  29.         private void Form1_Load(object sender, EventArgs e)  
  30.         {  
  31.             //-----------------------------表格欄位製作  
  32.             DataColumn colItem0 = new DataColumn("No", Type.GetType
  33.             ("System.String"));  
  34.             _tb.Columns.Add(colItem0);  
  35.             DataColumn colItem = new DataColumn("time", Type.GetTyp
  36.             e("System.String"));  
  37.             _tb.Columns.Add(colItem);  
  38.             DataColumn colItem2 = new DataColumn("H1", Type.GetType
  39.             ("System.String"));  
  40.             _tb.Columns.Add(colItem2);  
  41.             DataColumn colItem3 = new DataColumn("T1", Type.GetType
  42.             ("System.String"));  
  43.             _tb.Columns.Add(colItem3);  
  44.             DataColumn colItem4 = new DataColumn("H2", Type.GetType
  45.             ("System.String"));  
  46.             _tb.Columns.Add(colItem4);  
  47.             DataColumn colItem5 = new DataColumn("T2", Type.GetType
  48.             ("System.String"));  
  49.             _tb.Columns.Add(colItem5);  
  50.             DataColumn colItem6 = new DataColumn("H3", Type.GetType
  51.             ("System.String"));  
  52.             _tb.Columns.Add(colItem6);  
  53.             DataColumn colItem7 = new DataColumn("T3", Type.GetType
  54.             ("System.String"));  
  55.             _tb.Columns.Add(colItem7);  
  56.             DataColumn colItem8 = new DataColumn("H4", Type.GetType
  57.             ("System.String"));  
  58.             _tb.Columns.Add(colItem8);  
  59.             DataColumn colItem9 = new DataColumn("T4", Type.GetType
  60.             ("System.String"));  
  61.             _tb.Columns.Add(colItem9);  
  62.             DataColumn colItem10 = new DataColumn("H5", Type.GetTyp
  63.             e("System.String"));  
  64.             _tb.Columns.Add(colItem10);  
  65.             DataColumn colItem11 = new DataColumn("T5", Type.GetTyp
  66.             e("System.String"));  
  67.             _tb.Columns.Add(colItem11);  
  68.   
  69.             _tb.Clear(); //清空表格  
  70.             _tb.Rows.Clear();//清空資料  
  71.             dataGridView1.DataSource = null; //清除數據來源  
  72.             _tb.AcceptChanges();  
  73.             dataGridView1.DefaultCellStyle.Font = new Font("細明體", 10,
  74.             FontStyle.Bold);  
  75.             dataGridView1.AutoResizeColumns(DataGridViewAutoSizeCol
  76.             umnsMode.AllCells);  
  77.               
  78.             dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSiz
  79.             eColumnsMode.Fill;  
  80.             dataGridView1.DataSource = _tb;  
  81.   
  82.   
  83.             //-----------table2  
  84.             colItem0 = new DataColumn("No", Type.GetType("System.String"));  
  85.             _tb2.Columns.Add(colItem0);  
  86.             colItem = new DataColumn("time", Type.GetType("System.String"));  
  87.             _tb2.Columns.Add(colItem);  
  88.             colItem2 = new DataColumn("H1", Type.GetType("System.String"));  
  89.             _tb2.Columns.Add(colItem2);  
  90.             colItem3 = new DataColumn("T1", Type.GetType("System.String"));  
  91.             _tb2.Columns.Add(colItem3);  
  92.             colItem4 = new DataColumn("H2", Type.GetType("System.String"));  
  93.             _tb2.Columns.Add(colItem4);  
  94.             colItem5 = new DataColumn("T2", Type.GetType("System.String"));  
  95.             _tb2.Columns.Add(colItem5);  
  96.             colItem6 = new DataColumn("H3", Type.GetType("System.String"));  
  97.             _tb2.Columns.Add(colItem6);  
  98.             colItem7 = new DataColumn("T3", Type.GetType("System.String"));  
  99.             _tb2.Columns.Add(colItem7);  
  100.             colItem8 = new DataColumn("H4", Type.GetType("System.String"));  
  101.             _tb2.Columns.Add(colItem8);  
  102.             colItem9 = new DataColumn("T4", Type.GetType("System.String"));  
  103.             _tb2.Columns.Add(colItem9);  
  104.             colItem10 = new DataColumn("H5", Type.GetType("System.String"));  
  105.             _tb2.Columns.Add(colItem10);  
  106.             colItem11 = new DataColumn("T5", Type.GetType("System.String"));  
  107.             _tb2.Columns.Add(colItem11);  
  108.   
  109.             for(int i = 1 ; i < 10 ; i++)  
  110.             {  
  111.                 _NewRow = _tb.NewRow();  
  112.                 dataGridView1.Columns[1].Width = 300;  
  113.                 _NewRow["No"] = i;  
  114.                 _NewRow["time"] = DateTime.Now.ToString("yyyy/MM/ddHH:mm:ss");  
  115.                 _NewRow["H1"] = _rand.Next(0,100);  
  116.                 _NewRow["T1"] = _rand.Next(0, 40);  
  117.                 _NewRow["H2"] = _rand.Next(0, 100);  
  118.                 _NewRow["T2"] = _rand.Next(0, 40);  
  119.                 _NewRow["H3"] = _rand.Next(0, 100);  
  120.                 _NewRow["T3"] = _rand.Next(0, 40);  
  121.                 _NewRow["H4"] = _rand.Next(0, 100);  
  122.                 _NewRow["T4"] = _rand.Next(0, 40);  
  123.                 _NewRow["H5"] = _rand.Next(0, 100);  
  124.                 _NewRow["T5"] = _rand.Next(0, 40);  
  125.                   
  126.                 _tb.Rows.Add(_NewRow);  
  127.             }  
  128.         }  
  129.   
  130.         private void button1_Click(object sender, EventArgs e)  
  131.         {  
  132.             DataRow[] select_result = _tb.Select(textBox1.Text);  
  133.   
  134.             _tb2.Clear(); //清空表格  
  135.             _tb2.Rows.Clear();//清空資料  
  136.             dataGridView2.DataSource = null; //清除數據來源  
  137.             _tb2.AcceptChanges();  
  138.             dataGridView2.DefaultCellStyle.Font = new Font("細明
  139.              體", 10, FontStyle.Bold);  
  140.             dataGridView2.AutoResizeColumns(DataGridViewAutoSizeCol
  141.             umnsMode.AllCells);  
  142.   
  143.             dataGridView2.AutoSizeColumnsMode = DataGridViewAutoSiz
  144.             eColumnsMode.Fill;  
  145.             dataGridView2.DataSource = _tb2;  
  146.               
  147.             textBox2.Text = "";  
  148.   
  149.             for(int p = 0 ; p < select_result.Length ; p++)  
  150.             {  
  151.                 _NewRow2 = _tb2.NewRow(); //開新的一列  
  152.   
  153.                 for(int i = 0 ; i < select_result[p].ItemArray.Length ; i++)  
  154.                 {  
  155.                     textBox2.Text += select_result[p].ItemArray[i] + "  ";  
  156.                       
  157.                     dataGridView2.Columns[1].Width = 300;
  158.                     //指定第二列 列寬  
  159.   
  160.                     _NewRow2[_tb2.Columns[i].ToString()] = select_result[p].ItemArray[i];
  161.                     //依照列標題順序放入資料  
  162.   
  163.                 }  
  164.   
  165.                 _tb2.Rows.Add(_NewRow2); //寫入列資料  
  166.             }  
  167.         }  
  168.     }  
  169. }  

以下測試下任意幾種指令的結果,篩選方式跟SQL語法有點相似

執行結果

篩選 T1 > 30 且  H2 > 50 的資料




篩選編號 等於 4 的資料




篩選編號等於 4 或 6 或 8 的資料



篩選 H2 字首為 9 的資料


18

7

LINE 分享

相關創作

碧藍航線 自動戰鬥腳本 v2.2.0 定向摺疊 - v2

碧藍航線 自動戰鬥腳本 v2.2.2 奏響鳶尾之歌

碧藍航線 自動戰鬥腳本 v2.2.6杰諾瓦的焰火

留言

開啟 APP

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】