0

我有一个更新面板,在更新面板内有一个下拉列表和一个必填字段验证器,它与下拉列表相关联,并且下拉列表的自动回发设置为 true。现在,每当用户更改选项时,自动回发就会在更新面板中发生。我需要的是,如果用户从下拉列表中选择空项目,它不应该回发到服务器并且验证器应该触发....但在我的情况下,验证器会触发完美,还有一个回发,在回发之后,必填字段验证或状态为真。

如果验证器失败,我需要停止回发。

我已经搜索了很多这个问题,但没有发现任何有用的东西。

4

1 回答 1

1

1- 在下拉列表中:

CausesValidation="True" 

2- 在 Page_Load 中使用 string.Empty 到第一项的值:

 DropDownList1.Items.Add(new ListItem("Select...", string.Empty));

ASPX:

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
            CausesValidation="True" 
            onselectedindexchanged="DropDownList1_SelectedIndexChanged">
        </asp:DropDownList>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
            ControlToValidate="DropDownList1" Display="Dynamic" ErrorMessage="Empty"></asp:RequiredFieldValidator>
        <br />
        <asp:Label ID="Label1" runat="server" EnableViewState="False"></asp:Label>
    </ContentTemplate>
</asp:UpdatePanel>

后面的代码:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
        Label1.Text = DropDownList1.SelectedItem.Text;
}
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DropDownList1.Items.Add(new ListItem("Select...", string.Empty));
        DropDownList1.Items.Add(new ListItem("mehdi", "1"));
        DropDownList1.Items.Add(new ListItem("ali", "2"));
    }
}
于 2013-09-06T07:44:43.263 回答