質問編集履歴

2

使用ツールの変更

2023/04/02 23:17

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -239,8 +239,8 @@
239
239
 
240
240
  ### 補足情報(FW/ツールのバージョンなど)
241
241
 
242
- VIsualStudio2022 C# .NET6 フォームデザイナーを用いています。
242
+ VIsualStudio2022 C# .NET Framework フォームデザイナーを用いています。
243
-
244
-
245
-
246
-
243
+
244
+
245
+
246
+

1

質問の追加

2023/04/02 07:03

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- VisualStudio2022でDataTableとDataGridViewのバインドをしたものをDataGridViewのほうから選択的に削除・編集したいです。
1
+ VisualStudio2022でDataTableとDataGridViewのバインドをしたものをDataGridViewのほうから選択的に削除・編集、CSVの読み込みがしたいです。
test CHANGED
@@ -5,6 +5,8 @@
5
5
  違うボタンを押すことで「選択されたデータグリッドが削除→データテーブルも削除」
6
6
  また違うボタンを押すことで「選択されたデータグリッドが削除→データテーブルも削除→コンボボックスとNumericUpDownに入れた数字をデータテーブルに入れる→データグリッドに表示」
7
7
 
8
+ ②CSVファイルを読み込んでDataTableにいれ、DataGridViewで表示
9
+
8
10
  ### 前提
9
11
 
10
12
  「コンボボックスとNumericUpDownに入れた数字をデータテーブルに入れる→データグリッドに表示させる」がボタンで実行されるという状態です。
@@ -13,6 +15,11 @@
13
15
 
14
16
  Data Tableから読み込んでいるData Grid Viewの1行を選択的に削除するにはどうしたらいいのでしょうか?
15
17
  今現状、データグリッドを削除・編集するというコードのみで、選択的に消されないという状況です。しかもデータグリッドからも消されない。
18
+
19
+ また、ファイル選択後、読み込みをしようとするとエラーが出ます。(//*1)
20
+ →ハンドルされていない例外
21
+  System.Data.OleDb.OleDbException: '1 つ以上の必要なパラメーターの値が設定されていません。'
22
+ という表示が出ます。
16
23
 
17
24
  ### 該当のソースコード
18
25
 
@@ -157,10 +164,75 @@
157
164
  }
158
165
 
159
166
  }
167
+ /// <summary>
168
+ /// 買い物リストをcsvファイルから読み込む
169
+ /// </summary>
170
+ /// <param name="sender"></param>
171
+ /// <param name="e"></param>
172
+ private void LoadingButton_Click(object sender, EventArgs e)
173
+ {
174
+ var dlg = new OpenFileDialog()
175
+ {
176
+ Title = "ファイルの選択",
177
+ CheckFileExists = true,
178
+ RestoreDirectory = true,
179
+ InitialDirectory = @"C:\",
180
+ FileName = @"ItemList.csv",
181
+ Filter = "CSVファイル|*.csv|すべてのファイル|*.*"
182
+ };
183
+
184
+ if (dlg.ShowDialog() == DialogResult.OK)
185
+ {
186
+ OleDbConnection connection;
187
+ OleDbCommand command;
188
+ OleDbDataAdapter adapter;
189
+
190
+ DataSet dataset = new DataSet();
191
+ DataGrid datagrid = new DataGrid();
192
+
193
+ connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Path.GetDirectoryName(dlg.FileName) + "\\; Extended Properties=\"Text;HDR=YES;FMT=Delimited\"");
194
+ command = new OleDbCommand("SELECT [日付], [商品], [個数], [値段] FROM [" + Path.GetFileName(dlg.FileName) + "]", connection);
195
+
196
+ dataset.Clear();
197
+
198
+ adapter = new OleDbDataAdapter(command);
199
+ adapter.Fill(dataset); //*1
200
+
201
+
202
+ dt.Columns.Add("日付");
203
+ dt.Columns.Add("商品");
204
+ dt.Columns.Add("個数");
205
+ dt.Columns.Add("値段");
206
+
207
+
208
+
209
+ for (int line = 0; line < dataset.Tables[0].Rows.Count; line++)
210
+ {
211
+ DataRow data = dataset.Tables[0].Rows[line];
212
+ Object[] new_row = new Object[]
213
+ {
214
+ String.Format(@"{0} ({1})", data["日付"], data["商品"]), data["個数"], data["値段"]
215
+ };
216
+
217
+ dt.Rows.Add(new_row);
218
+
219
+ }
220
+
221
+ datagrid.DataSource = dt;
222
+ }
223
+
224
+ else
225
+ {
226
+ MessageBox.Show("ファイルが見つかりません");
227
+ return;
228
+ }
229
+ }
230
+
160
231
 
161
232
 
162
233
 
163
234
 
235
+
164
236
  ```
165
237
 
166
238