在Updatepanel中将AutoPostBack的DropdownList验证设置为true

时间:2012-01-18 11:27:52

标签: c# asp.net drop-down-menu .net-2.0 updatepanel

有很多帖子处理更新面板和部分页面呈现中的验证控件。但我在这里遇到了一个不同的问题,我确实尝试更新到sp1 .NET framework 2.0和.NET Framework 4.0,但没有任何反应。

基本上我在更新面板中有一个下拉列表,其autopostback设置为true,并为-- Select --添加空项index 0以进行验证(Required Field Validator)目的。即使我选择索引0,我也会发生这种情况,验证消息会短暂出现,然后发生部分回发。是否有任何理由采用相同或替代的方法来做到这一点。

请注意:

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

2 个答案:

答案 0 :(得分:0)

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

for ex':

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

答案 1 :(得分:0)

作为一个快速测试,我想出了这个,对我来说是有效的:

<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中添加了验证组;仅在ddl1上验证了SelectedIndexChanged,但ddl1txt1都经过验证OnClick