回答編集履歴

3

追記

2018/11/13 05:33

投稿

退会済みユーザー
test CHANGED
@@ -23,3 +23,131 @@
23
23
 
24
24
 
25
25
  詳しい方法が不明でしたら聞いてください。DB が何かの情報もよろしく。
26
+
27
+
28
+
29
+ **【追記2】**
30
+
31
+
32
+
33
+ 上の追記で、
34
+
35
+
36
+
37
+ > DB に検索用のクエリを投げるのではなくて、全レコードはすでに DataSet / DataTable に取得済みなので、それをフィルタリングして DataGridView に表示した方がよさそうです。
38
+
39
+
40
+
41
+ と書きましたが、そのコード例を書いておきます。
42
+
43
+
44
+
45
+ 使った DB は SQL Server の Northwind サンプルデータベースの Products テーブルです。button1_Click メソッドで DataTable.DefaultView.RowFilter を使ってフィルタリングしているところに注目してください。
46
+
47
+
48
+
49
+ ```
50
+
51
+ using System;
52
+
53
+ using System.Collections.Generic;
54
+
55
+ using System.ComponentModel;
56
+
57
+ using System.Data;
58
+
59
+ using System.Drawing;
60
+
61
+ using System.Linq;
62
+
63
+ using System.Text;
64
+
65
+ using System.Threading.Tasks;
66
+
67
+ using System.Windows.Forms;
68
+
69
+
70
+
71
+ namespace WindowsFormsApplication1
72
+
73
+ {
74
+
75
+ public partial class Form3 : Form
76
+
77
+ {
78
+
79
+ public Form3()
80
+
81
+ {
82
+
83
+ InitializeComponent();
84
+
85
+ }
86
+
87
+
88
+
89
+ private void productsBindingNavigatorSaveItem_Click(object sender, EventArgs e)
90
+
91
+ {
92
+
93
+ this.Validate();
94
+
95
+ this.productsBindingSource.EndEdit();
96
+
97
+ this.tableAdapterManager.UpdateAll(this.northwindDataSet);
98
+
99
+ }
100
+
101
+
102
+
103
+ private void Form3_Load(object sender, EventArgs e)
104
+
105
+ {
106
+
107
+ this.productsTableAdapter.Fill(this.northwindDataSet.Products);
108
+
109
+ }
110
+
111
+
112
+
113
+ private void button1_Click(object sender, EventArgs e)
114
+
115
+ {
116
+
117
+ if (!String.IsNullOrEmpty(this.textBox1.Text))
118
+
119
+ {
120
+
121
+ NorthwindDataSet.ProductsDataTable table = this.northwindDataSet.Products;
122
+
123
+ table.DefaultView.RowFilter = "ProductName LIKE '%" + this.textBox1.Text + "%'";
124
+
125
+ this.productsBindingSource.DataSource = this.northwindDataSet.Products;
126
+
127
+ }
128
+
129
+ else
130
+
131
+ {
132
+
133
+ NorthwindDataSet.ProductsDataTable table = this.northwindDataSet.Products;
134
+
135
+ table.DefaultView.RowFilter = "";
136
+
137
+ }
138
+
139
+ }
140
+
141
+ }
142
+
143
+ }
144
+
145
+ ```
146
+
147
+
148
+
149
+ TextBox に "cha" と入力して Search ボタンをクリックし、ProductName LIKE '%cha%' で検索した結果が下の画像です。
150
+
151
+
152
+
153
+ ![イメージ説明](633cca31f48ebad83834f4a03c2b0cae.jpeg)

2

追記&訂正

2018/11/13 05:33

投稿

退会済みユーザー
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- 補足情報を見ると、Visual Studio のーターソース構成ウィザードを使って型付 DataSet / DataTable + TableAdapter を生成して使っていて、すでに DataGridView に全レコードの一覧を表示し、それを編集して結果を DB に反映するところまではできているようですね。
13
+ 補足情報を見ると、Visual Studio のーターソース構成ウィザードを使って型付 DataSet / DataTable + TableAdapter を生成して使っていて、すでに DataGridView に全レコードの一覧を表示し、それを編集して結果を DB に反映するところまではできているようですね。
14
14
 
15
15
 
16
16
 

1

追記

2018/11/13 01:51

投稿

退会済みユーザー
test CHANGED
@@ -3,3 +3,23 @@
3
3
 
4
4
 
5
5
  やり方は「パラメータ化クエリ」をキーワードにググればわかると思いますが、不明な点があれば聞いてください。その際は、DB が何か(SQL Server? Access? MySQL? その他?)を書いてください。
6
+
7
+
8
+
9
+ **【追記】**
10
+
11
+
12
+
13
+ 補足情報を見ると、Visual Studio のセーターソース構成ウィザードを使って型付 DataSet / DataTable + TableAdapter を生成して使っていて、すでに DataGridView に全レコードの一覧を表示し、それを編集して結果を DB に反映するところまではできているようですね。
14
+
15
+
16
+
17
+ さらに、それに TextBox と Button を追加して検索機能を持たせようとしているのですか?
18
+
19
+
20
+
21
+ であれば、DB に検索用のクエリを投げるのではなくて、全レコードはすでに DataSet / DataTable に取得済みなので、それをフィルタリングして DataGridView に表示した方がよさそうです。
22
+
23
+
24
+
25
+ 詳しい方法が不明でしたら聞いてください。DB が何かの情報もよろしく。