###前回の質問
↓「タイトル」GridViewのデータテーブルがnullになってしまう
https://teratail.com/questions/274949
前提・実現したいこと
前回の質問の続きとなります。
まず、前回の質問では、上記のタイトルの通りの質問をし解決いたしました。
今回は、前回使用したGridViewにCustomValidatorを使用してエラーメッセージを出すようにしたいのですが、CustomValidatorが思うように動きません。
MySQLのデータをGridViewを使用して表示しています。
行のデータの選択ボタン押下後、削除ボタン(CommandFieldの削除ボタンではありません)を押したときデータが削除されるようになっています。
ここで、なにも選択せず削除ボタンを押したときにCustomValidatorによりメッセージが出るようにしたいのですが、int selectV = (int)GridView1.SelectedValue;がNullReferenceExceptionを出してしまいます。
Validatorの使用方法が間違っていますでしょうか。
この原因についてご教示お願いいたします。
###エラーの内容
System.NullReferenceException: 'オブジェクト参照がオブジェクト インスタンスに設定されていません。' System.Web.UI.WebControls.GridView.SelectedValue.get が null を返しました。
該当のソースコード
protected void Button2_Click(object sender, EventArgs e) //削除 { int selectV = (int)GridView1.SelectedValue; //主キー(id) var query = "DELETE FROM members WHERE id=@Id"; using (var connection = new MySqlConnection(connString)) { using (var command = new MySqlCommand(query, connection)) { command.Parameters.Add("@Id", MySqlDbType.Int32); command.Parameters["@Id"].Value = selectV; connection.Open(); command.ExecuteNonQuery(); } } GridView1.DataSource = DataCatch(); GridView1.DataBind(); } protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) { if(GridView1.SelectedValue == null || (int)GridView1.SelectedValue == -1) { args.IsValid = false; } else { args.IsValid = true; } }
補足情報(FW/ツールのバージョンなど)
ASP.NET
VisualStudio2019
C#
.NET Framework4.7.2
回答2件
あなたの回答
tips
プレビュー