teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記&訂正

2020/07/05 07:52

投稿

退会済みユーザー
answer CHANGED
@@ -55,7 +55,7 @@
55
55
 
56
56
  質問者さんの DataCatch() メソッドは、(1) DataTable(または DataView)を返すように変更、(2) SELECT クエリは SELECT * FROM ... のように * は使わないで * の部分にはフィールド名を明記する、(3) 接続の Open / Close は書かないで MySqlDataAdapter に任せる(自動的に行われます)、(4) MySqlConnection の初期化のコードには using 句を使って確実に Dispose されるようにする(特に Button2_Click では必須) ・・・と言うように変更した方がよさそうです。
57
57
 
58
- それを Page_Load で初期画面のデータを取得する際と、Button2_Click で削除後のデータを取得する際に GridView の DataSource プロパティに設定して、そのあとで GridView,DataBind() としてください。
58
+ それを Page_Load で初期画面のデータを取得する際と、Button2_Click で削除後のデータを取得する際に GridView の DataSource プロパティに設定して、そのあとで GridView.DataBind() としてください。
59
59
 
60
60
  以下のような感じです。
61
61
 

1

追記

2020/07/05 07:52

投稿

退会済みユーザー
answer CHANGED
@@ -47,4 +47,72 @@
47
47
 
48
48
  他にも問題はいろいろありそうですが、とりあえずこれで削除はできるようになると思います。
49
49
 
50
- 不明点があればこの回答のコメント欄で質問してください。
50
+ 不明点があればこの回答のコメント欄で質問してください。
51
+
52
+ **【追記】**
53
+
54
+ 下のコメント欄の 2020/07/05 16:22 の私のコメントで、「そのためには DataCatch() メソッドのコードを直した方がよさそうです。質問にあるコードは問題もあるので、その修正案と合わせて後で回答欄に追記しておきます。」と書きましたがそれを以下に書きます。
55
+
56
+ 質問者さんの DataCatch() メソッドは、(1) DataTable(または DataView)を返すように変更、(2) SELECT クエリは SELECT * FROM ... のように * は使わないで * の部分にはフィールド名を明記する、(3) 接続の Open / Close は書かないで MySqlDataAdapter に任せる(自動的に行われます)、(4) MySqlConnection の初期化のコードには using 句を使って確実に Dispose されるようにする(特に Button2_Click では必須) ・・・と言うように変更した方がよさそうです。
57
+
58
+ それを Page_Load で初期画面のデータを取得する際と、Button2_Click で削除後のデータを取得する際に GridView の DataSource プロパティに設定して、そのあとで GridView,DataBind() としてください。
59
+
60
+ 以下のような感じです。
61
+
62
+
63
+ ```C#
64
+ using System;
65
+ using System.Data;
66
+ using MySql.Data.MySqlClient;
67
+
68
+ namespace WebApplication1
69
+ {
70
+ public partial class WebForm8 : System.Web.UI.Page
71
+ {
72
+ protected void Page_Load(object sender, EventArgs e)
73
+ {
74
+ if (!IsPostBack)
75
+ {
76
+ GridView1.DataSource = DataCatch();
77
+ GridView1.DataBind();
78
+ }
79
+ }
80
+
81
+ protected DataTable DataCatch()
82
+ {
83
+ var table = new DataTable();
84
+ var query = "SELECT Id, xxx, yyy, zzz FROM tableA";
85
+ var connString = "接続文字列(省略)";
86
+ using (var connection = new MySqlConnection(connString))
87
+ {
88
+ var adapter = new MySqlDataAdapter();
89
+ adapter.SelectCommand = new MySqlCommand(query, connection);
90
+ adapter.Fill(table);
91
+ return table;
92
+ }
93
+ }
94
+
95
+ protected void Button2_Click(object sender, EventArgs e)
96
+ {
97
+ int selectV = (int)GridView1.SelectedValue;
98
+
99
+ var query = "DELETE FROM tableA WHERE Id=@Id";
100
+ var connString = "接続文字列(省略)";
101
+
102
+ using (var connection = new MySqlConnection(connString))
103
+ {
104
+ using (var command = new MySqlCommand(query, connection))
105
+ {
106
+ command.Parameters.Add("@Id", MySqlDbType.Int32);
107
+ command.Parameters["@Id"].Value = selectV;
108
+ connection.Open();
109
+ command.ExecuteNonQuery();
110
+ }
111
+ }
112
+
113
+ GridView1.DataSource = DataCatch();
114
+ GridView1.DataBind();
115
+ }
116
+ }
117
+ }
118
+ ```