在更新面板中将AutoPostBack设置为true的DropdownList验证

本文关键字:true DropdownList 验证 设置 AutoPostBack 更新 | 更新日期: 2023-09-27 18:20:44

有许多帖子涉及更新面板内的验证控件和部分页面呈现。但我在这里遇到了另一个问题,我确实尝试更新到sp1.NET framework 2.0和.NET framework 4.0,但什么都没发生。

基本上,我在更新面板中得到了一个dropdownlist,其autopostback设置为true,并添加了一个空项-- Select --作为index 0用于验证(Required Field Validator)。碰巧的是,即使选择索引0,验证消息也会短暂出现,然后进行部分回发。有没有人有任何理由用同样或替代的方式来做这件事。

注:

在所选索引更改事件期间,我正在填充其他控件(下拉列表)。我可以使用AjaxControlToolkit中的级联下拉列表,但随后我失去了其他控件所需的事件验证功能。

在更新面板中将AutoPostBack设置为true的DropdownList验证

为什么不在代码背后验证客户端选择?

例如:

if (ddlName.selectedValue == "-1")
{
    lblErr.text = "You have to select...";
    lblErr.visible = true;
}

作为一个快速测试,我提出了这个(对我来说)有效的方法:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:RequiredFieldValidator ID="rfv" runat="server" ControlToValidate="ddl1" InitialValue="0" ValidationGroup="DDLOnly">*</asp:RequiredFieldValidator>
        <asp:DropDownList ID="ddl1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="test" CausesValidation="true" ValidationGroup="DDLOnly">
            <asp:ListItem Value="0">---Select---</asp:ListItem>
            <asp:ListItem Value="1">Option1</asp:ListItem>
            <asp:ListItem Value="2">Option2</asp:ListItem>
            <asp:ListItem Value="3">Option3</asp:ListItem>
        </asp:DropDownList>
        <asp:DropDownList ID="ddl2" runat="server">
        </asp:DropDownList>
        <asp:RequiredFieldValidator ID="rfvTxt" runat="server" ControlToValidate="txt1" ValidationGroup="WholePage">*</asp:RequiredFieldValidator>
        <asp:TextBox ID="txt1" runat="server" ValidationGroup="WholePage"></asp:TextBox>
        <asp:Button ID="btn1" runat="server" Text="Button" OnClientClick="return Page_ClientValidate();" OnClick="btn" />
    </ContentTemplate>
</asp:UpdatePanel>

在后面的代码中:

protected void test(object sender, EventArgs e)
{
    ddl2.Items.Clear();
    for (int i = 0; i < 4; i++)
        ddl2.Items.Add(new ListItem("Test" + ddl1.SelectedIndex));
}

选择任何选项时填充第二个DDL,但不用于0 的初始项

编辑:TextBoxButton中添加验证组;只有ddl1SelectedIndexChanged上验证,但ddl1txt1都在OnClick 上验证