値フィールドとテキストフィールドが実行時にバインドされるDropdownlistがあります。 --select--
の値を持つ最初のアイテムとして0
があり、残りの値は実行時にバインドされます。
"g1"
およびIntialvalue=0
として、コントロールとバリデーターの両方に検証グループを指定しました
しかし、--select--
オプションを選択しても、ページはポストバックしています。
<asp:DropDownList AutoPostBack="true" CssClass="dropdown" ValidationGroup="g1"
ID="ddlReportType" runat="server"
OnSelectedIndexChanged="ddlReportType_SelectedIndexChanged"></asp:DropDownList>
<asp:RequiredFieldValidator ControlToValidate="ddlReportType" ID="RequiredFieldValidator1"
ValidationGroup="g1" CssClass="errormesg" ErrorMessage="Please select a type"
InitialValue="0" runat="server" Display="Dynamic">
</asp:RequiredFieldValidator>
そして、ドロップダウンをバインドするためのコードビハインド
ddlReportType.Items.Clear();
ddlReportType.DataSource = dt.Tables[0];
ddlReportType.DataTextField = "ReportType";
ddlReportType.DataValueField = "ReportTypeID";
ddlReportType.DataBind();
ddlReportType.Items.Insert(0, new ListItem("--Select--", "0"));
//ddlReportType.Items[0].Value = "0";
ddlReportType.SelectedIndex = 0;
<asp:RequiredFieldValidator InitialValue="-1" ID="Req_ID" Display="Dynamic"
ValidationGroup="g1" runat="server" ControlToValidate="ControlID"
Text="*" ErrorMessage="ErrorMessage"></asp:RequiredFieldValidator>
ここでは、asp:CompareValidatorを使用し、値を「選択」オプションと比較します。
つかいます Operator="NotEqual" ValueToCompare="0"
ユーザーが「選択」を送信できないようにします。
<asp:CompareValidator ControlToValidate="ddlReportType" ID="CompareValidator1"
ValidationGroup="g1" CssClass="errormesg" ErrorMessage="Please select a type"
runat="server" Display="Dynamic"
Operator="NotEqual" ValueToCompare="0" Type="Integer" />
上記の場合、ドロップダウンから「選択」オプションを選択すると、ErrorMessage
が表示されます。
新しいドロップダウンを作成しなければならなかったときに問題に出くわすまで、私はこれに数日間苦労していました。私はいくつかのDropDownListコントロールを持っていて、運のない検証を動作させようとしました。 1つはデータバインドされ、もう1つはaspxページから入力されました。データバインドされたものを削除し、2つ目の手動リストを追加する必要がありました。私の場合、このようなドロップダウンを作成し、必須または比較バリデーターの値(0または-1)を確認すると、バリデーターは失敗しました。
<asp:DropDownList ID="DDL_Reason" CssClass="inputDropDown" runat="server">
<asp:ListItem>--Select--</asp:ListItem>
<asp:ListItem>Expired</asp:ListItem>
<asp:ListItem>Lost/Stolen</asp:ListItem>
<asp:ListItem>Location Change</asp:ListItem>
</asp:DropDownList>
ただし、このようなInitialValueの追加は、比較バリデーターに対して即座に機能しました。
<asp:ListItem Text="-- Select --" Value="-1"></asp:ListItem>