創作內容

18 GP

C# DataGridVew 篩選功能

作者:貓貓風 ฅ●ω●ฅ│2018-11-16 11:28:03│巴幣:36│人氣:1079
.



















在 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 的資料


引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4196630
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:涼涼風|C#

留言共 7 篇留言


雖然我更習慣直接在Sql查詢完,但這也滿受用的

11-16 12:09

貓貓風 ฅ●ω●ฅ
也可以當離線版的資料庫使用11-16 13:00
小刀
厲害~我看不懂~

11-16 16:29

貓貓風 ฅ●ω●ฅ
算是基本的表格篩選功能><11-16 17:10
魔女的黑貓
JQ 也有GridViewTable

還可以指定欄位搜尋 也很簡單使用

C#真懷念...剛出時學校老師就教

期末作業是寫一個選擇圖片存路徑之後做成一個流覽圖片的winAPP

98分路過

11-16 17:10

貓貓風 ฅ●ω●ฅ
感覺黑貓很厲害owo11-16 17:53
魔女的黑貓
嘛~學生時代的作業要求都不會太難。那題目的難度你們應該也可達成。

唉...但出社會做工程師
在台灣就很悲慘
台灣專業技術價錢是亞洲最低
程式工程師熬的過三年的都砍一半
六年以上都必須至少會3種以上主流程式語言(要有作品)
因為...公司有新需求只有一兩個工程師要協助達成
當然完成新需求可能要付出很多心力(薪水不會加,但學到就是你的。)

不小心話太多..(老人毛病

加油吧 新血!

11-16 19:07

貓貓風 ฅ●ω●ฅ
了解喽 感謝精闢的分析 ><11-16 23:27
Fuwawa
這個真的是基本ㄉㄇ...

11-16 21:58

貓貓風 ฅ●ω●ฅ
對呀 算簡單的11-16 23:25
嚮鄉紅
貓貓好厲害,懂好廣

11-17 09:00

貓貓風 ฅ●ω●ฅ
這是我無聊隨便寫的XDDD11-17 10:52
奇米 .輕
怎麼這麼強大!可惜我看不懂!我幫推

11-21 23:02

貓貓風 ฅ●ω●ฅ
雖然這篇算比較基本的XD 感謝晴的支持 owo11-21 23:04
我要留言提醒:您尚未登入,請先登入再留言

18喜歡★s1234567 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:FFU 控制系統開發... 後一篇:C# 老鼠走迷宮...

追蹤私訊切換新版閱覽

作品資料夾

mine0rain好緊張
明天要考檢定了好緊張看更多我要大聲說昨天18:52


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

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