arif_dzainal Ответов: 4

как использовать пользовательский валидатор зависит от значения выпадающего списка


Hi all,

i have come confusion, how can we achieve this goal

for example, i have a dropdown, which the item is HR, Admin, IT

eg : <asp:DropDownList ID="DropDownList22" runat="server" OnSelectedIndexChanged="DropDownList22_SelectedIndexChanged" AutoPostBack="true" >
    <asp:ListItem>IT</asp:ListItem>
    <asp:ListItem>Admin</asp:ListItem>
    <asp:ListItem>HR</asp:ListItem>
</asp:DropDownList>

so, i want to put my validation here in date textbox, only if user select IT, this textbox will validate, for other (Admin and HR) they can left the date empty

<asp:TextBox ID="TextBox32" runat="server" AutoPostBack="true" OnTextChanged="TextBox32_TextChanged"></asp:TextBox>

what kind of validator can i use and how are the validator can be made?
i already try put requiredvalidator, but if i select admin and left the field empty, i got the errormessage too.

<asp:RequiredFieldValidator ID="chkDateReturn" runat="server" ControlToValidate="TextBox32" ErrorMessage="Must select the return date" ></asp:RequiredFieldValidator>

thanks

4 Ответов

Рейтинг:
8

arif_dzainal

я уже нашел решение, хотя оно работает и для меня

<%
                    if (DropDownList22.SelectedValue == "IT") {
                %>
                <asp:RequiredFieldValidator ID="chkDept" runat="server" ControlToValidate="TextBox32" ErrorMessage="Must select" ></asp:RequiredFieldValidator>
                <% } %>



спасибо всем


Рейтинг:
31

vinodkumarnie

Попробуйте ниже..

Код C# ниже..

protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            if (DropDownList22.SelectedItem.Text == "IT")
            {
                Button1.CausesValidation = true;
            }
            else
            {
                Button1.CausesValidation = false;
            }
        }
    }

    protected void DropDownList22_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (DropDownList22.SelectedItem.Text == "IT")
        {
            Button1.CausesValidation = true;
        }
        else
        {
            Button1.CausesValidation = false;
        }
    }

HTML-код ниже..
<asp:DropDownList ID="DropDownList22" runat="server" OnSelectedIndexChanged="DropDownList22_SelectedIndexChanged"

            AutoPostBack="true">
            <asp:ListItem>IT</asp:ListItem>
            <asp:ListItem>Admin</asp:ListItem>
            <asp:ListItem>HR</asp:ListItem>
        </asp:DropDownList>
        <asp:TextBox ID="TextBox32" runat="server" AutoPostBack="true" OnTextChanged="TextBox32_TextChanged"></asp:TextBox>
        <asp:RequiredFieldValidator ID="chkDateReturn" runat="server" ControlToValidate="TextBox32"

            ErrorMessage="Must select the return date"></asp:RequiredFieldValidator>
        <asp:Button ID="Button1" runat="server" Text="Button" CausesValidation="false" />


Надеюсь, это вам поможет..


Рейтинг:
2

arif_dzainal

но разве это не привело к тому, что другие проверки также были отключены?

сначала я попробую это сделать


Рейтинг:
1

Prasad Khandekar

Привет,

В вашем обработчике загрузки страницы на стороне сервера проверьте значение выпадающего списка и если это что-то другое, то установите CausesValidation свойство TextBox32 имеет значение false. Вы также можете установить для свойства enabled chkDateReturn значение false.

с уважением,