Как добавить RequiredFieldValidator в элемент управления DropDownList? - PullRequest
61 голосов
/ 17 февраля 2010

У меня есть DropDownList, связанный с SqlDataSource для отображения значений из базы данных.

Я не могу подтвердить, используя RequiredFieldValidator.

Ответы [ 4 ]

95 голосов
/ 17 февраля 2010

По большей части вы относитесь к нему так, как будто вы проверяете любой другой вид элемента управления, но используете свойство InitialValue необходимого валидатора поля.

<asp:RequiredFieldValidator ID="rfv1" runat="server" ControlToValidate="your-dropdownlist" InitialValue="Please select" ErrorMessage="Please select something" />

По сути, это говорит о том, что проверка будет успешной, если в раскрывающемся списке выбрано любое другое значение, кроме 1, заданного в InitialValue.

В случае привязки данных вам нужно будет вставить значение «Пожалуйста, выберите» впоследствии следующим образом:

this.ddl1.Items.Insert(0, "Please select");
23 голосов
/ 17 февраля 2010

Предположим, ваш выпадающий список:

<asp:DropDownList runat="server" id="ddl">
<asp:ListItem Value="0" text="Select a Value">
....
</asp:DropDownList>

У вас есть два способа:

<asp:RequiredFieldValidator ID="re1" runat="Server" InitialValue="0"....

2-й способ - использовать валидатор сравнения:

<asp:CompareValidator ID="re1" runat="Server" ValueToComare="0" ConroltoCompare="ddl" Operator="Equel"....
10 голосов
/ 02 августа 2016

Если вы используете источник данных, вот еще один способ сделать это без кода.

Обратите внимание на следующие ключевые моменты:

  • ListItem из Value="0" находится на исходной странице, не добавляется в коде
  • ListItem в источнике будет перезаписано, если вы не включите AppendDataBoundItems="true" в DropDownList
  • InitialValue="0" сообщает валидатору, что это значение, которое должен запустить этот валидатор (как указано в других ответах)

Пример:

<asp:DropDownList ID="ddlType" runat="server" DataSourceID="sdsType"
                  DataValueField="ID" DataTextField="Name" AppendDataBoundItems="true">
    <asp:ListItem Value="0" Text="--Please Select--" Selected="True"></asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator ID="rfvType" runat="server" ControlToValidate="ddlType" 
                            InitialValue="0" ErrorMessage="Type required"></asp:RequiredFieldValidator>
<asp:SqlDataSource ID="sdsType" runat="server" 
                   ConnectionString='<%$ ConnectionStrings:TESTConnectionString %>'
                   SelectCommand="SELECT ID, Name FROM Type"></asp:SqlDataSource>
0 голосов
/ 28 августа 2018

InitialValue = "0": начальная проверка срабатывает, когда в ddl выбран 0-й элемент индекса

<asp:RequiredFieldValidator InitialValue="0" Display="Dynamic" CssClass="error" runat="server" ID="your_id" ValidationGroup="validationgroup" ControlToValidate="your_dropdownlist_id" />
...