vacio - Validación de lista desplegable en Asp.net usando un validador de campo requerido
requiredfieldvalidator dropdownlist (4)
Agregue InitialValue="0"
en la etiqueta del validador de campo requerido
<asp:RequiredFieldValidator InitialValue="-1" ID="Req_ID"
Display="Dynamic" ValidationGroup="g1" runat="server"
ControlToValidate="ControlID"
InitialValue="0" ErrorMessage="ErrorMessage">
</asp:RequiredFieldValidator>
Tengo una lista desplegable cuyo campo de valor y campo de texto están vinculados en tiempo de ejecución. tiene --select--
como primer elemento con un valor de 0
y el resto de los valores están vinculados en tiempo de ejecución.
He dado un grupo de validación tanto para el control como para el validador como "g1"
e Intialvalue=0
Pero aún así, la página se está devolviendo aunque seleccione la opción --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>
Y código detrás para enlazar el menú desplegable
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;
Aquí use asp: CompareValidator y compare el valor con la opción "seleccionar".
Use Operator="NotEqual" ValueToCompare="0"
para evitar que el usuario envíe el "select".
<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" />
Cuando lo haga arriba, si selecciona la opción "seleccionar" del menú desplegable, mostrará el ErrorMessage
.
Estuve luchando con esto durante unos días hasta que me topé con el problema cuando tuve que construir un nuevo menú desplegable. Tuve varios controles DropDownList e intenté que la validación funcionara sin suerte. Uno fue enlazado y el otro se llenó desde la página aspx. Necesitaba descartar el archivo de base de datos y agregar una segunda lista manual. En mi caso, los validadores fallaron si construyó un menú desplegable como este y miró cualquier valor (0 o -1) para un validador requerido o de comparación:
<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>
Sin embargo, agregar el valor inicial como este funcionó instantáneamente para un validador de comparación.
<asp:ListItem Text="-- Select --" Value="-1"></asp:ListItem>
<asp:RequiredFieldValidator InitialValue="-1" ID="Req_ID" Display="Dynamic"
ValidationGroup="g1" runat="server" ControlToValidate="ControlID"
Text="*" ErrorMessage="ErrorMessage"></asp:RequiredFieldValidator>