この度はお読みいただき、誠にありがとうございました。コード ビハインドからのページ読み込み時に ASP.NET ページの既定のボタンを設定していた問題がありますが、1 つのコントロールを対象とする複数の検証グループがあるため、機能しなくなりました。ここで、そのコントロール (テキスト ボックス) で Enter キーを押すと、両方のグループの検証がトリガーされ、検証の概要テキストが差し引かれます。
これが私の例のコードです:
ASPX
<table>
<tr>
<td><asp:Textbox runat="server" ID="validateMe"></asp:TextBox></td>
<td><asp:RequiredFieldValidator ID="firstValidator" runat="server" ErrorMessage="First check not valid" Text="*" ControlToValidate="validateMe" ValidationGroup="firstGroup"></asp:RequiredFieldValidator>
<td><asp:RequiredFieldValidator ID="secondValidator" runat="server" ErrorMessage="Second check not valid" Text="*" ControlToValidate="validateMe" ValidationGroup="secondGroup"></asp:RequiredFieldValidator>
</tr>
<tr>
<td><asp:Button runat="server" ID="firstButton" Text="V1" ValidationGroup="firstGroup"/></td>
<td><asp:Button runat="server" ID="secondButton" Text="V2" ValidationGroup="secondGroup"/></td>
</tr>
<table>
<asp:ValidationSummary ID="firstSummary" runat="server" ValidationGroup="firstGroup"/>
<asp:ValidationSummary ID="secondSummary" runat="server" ValidationGroup="secondGroup"/>
C#
protected void Page_Load(object sender, EventArgs e)
{
this.Form.DefaultButton = firstButton.UniqueID;
}
これを使用して、テキストボックス内で何も入力せずに「Enter」を押すと、検証の概要は表示されませんが、テキストボックスの横に 2 つのアスタリスク (グループごとに 1 つ) が表示されます。ユーザーが「Enter」を押すと、DefaultButton に割り当てられるはずの最初のグループ (ここでは「firstButton」) のみを使用して完全な検証が行われることが予想されます。この機能を実現し、ユーザーが代わりに「firstButton」をクリックした場合に発生するクライアント側の検証を開始する方法はありますか?
また、テーブル全体と検証の概要を asp:Panel 内にラップし、そこに DefaultButton を設定しようとしましたが、同じ結果が得られました。正しい方向への助けや指針をいただければ幸いです。