前提・実現したいこと
ASP.NET C#で、チェックボックスリストに以下の挙動を付けたいです。
① CustomValidatorを含む.ascxコントロールにCheckBoxList(Id=ch1)があります。
② CheckBoxList(Id=ch1)はSQL ServerのDBから汲み上げた項目。Text=1、2、3...と続く。AutoPostBackでチェックボックスを制御。
③ 検証をトリガーするボタンは、このコントロールを使用する別のファイルにあります。
④ ③のボタンをクリックしたときにCustomValidatorを使用してCheckBoxList(Id=ch1)が未選択(チェックが1つもついていない)の際にエラーメッセージが表示されるようにしたいです。
発生している問題・エラーメッセージ
④に行く前の段階からCustomValidatorが起動せず困っています。なのでボタンをトリガーにすることもできていません。ブレークポイントを設置しましたが、ヒットしませんでした。
該当のソースコード
CheckBoxListとCustomValidatorがあるascx
C#
1<ASP:SqlDataSource ID="sds1" runat="server" 2SelectCommand="<%$ Resources:sds1_SelectCommand %>" CancelSelectOnNullParameter="false" /> 3 4<ASP:CheckBoxList ID="chl1" runat="server" DataSourceID="sdschl1" DataTextField="item_text" 5DataValueField="item_value" RepeatDirection="Horizontal" ondatabound="chlchl1_DataBound" 6OnSelectedIndexChanged="chl1_SelectedIndexChanged" AutoPostBack="True" /> 7 8<ASP:CustomValidator ID="cuschl1" runat="server" text="<%$ Resources:lblMessage_chl1Error %>" 9OnServerValidate="cuschl1_ServerValidate" ValidateEmptyText="True" Visible="True" /> 10<!-- Resources:lblMessage_chl1Error にはエラー文言が入っています。-->
上記のascx.cs
C#
1// この検証が起動しない! 2public void cuschl1_ServerValidate(object sender, ServerValidateEventArgs args) 3 { 4 args.IsValid = true; 5 6 if (chl1.SelectedIndex == -1) 7 { 8 args.IsValid = false; 9 } 10 }
トリガーにしたいボタンがあるaspx
C#
1<asp:Button ID="btnSearch" runat="server" Text="<%$ Resources: btnSearch %>" onclick="btnSearch_Click" />
上記のaspx.cs
C#
1protected void btnSearch_Click(object sender, EventArgs e) 2 { 3 Page.Validate(""); // ここに何を書けばいいのかわからない 4 }
試したこと
以下は現状と相似したケースだと思いますが、解決法がよくわからなかったものです。
https://stackoverrun.com/ja/q/1933414
補足情報(FW/ツールのバージョンなど)
質問者:ASP.Net、C#ともに触れて1カ月の超初心者。
使用環境:Visual Studio2017、.NET Framework4.6.2以降
回答2件
あなたの回答
tips
プレビュー