我有一个更新面板,在更新面板内有一个下拉列表和一个必填字段验证器,它与下拉列表相关联,并且下拉列表的自动回发设置为 true。现在,每当用户更改选项时,自动回发就会在更新面板中发生。我需要的是,如果用户从下拉列表中选择空项目,它不应该回发到服务器并且验证器应该触发....但在我的情况下,验证器会触发完美,还有一个回发,在回发之后,必填字段验证或状态为真。
如果验证器失败,我需要停止回发。
我已经搜索了很多这个问题,但没有发现任何有用的东西。
我有一个更新面板,在更新面板内有一个下拉列表和一个必填字段验证器,它与下拉列表相关联,并且下拉列表的自动回发设置为 true。现在,每当用户更改选项时,自动回发就会在更新面板中发生。我需要的是,如果用户从下拉列表中选择空项目,它不应该回发到服务器并且验证器应该触发....但在我的情况下,验证器会触发完美,还有一个回发,在回发之后,必填字段验证或状态为真。
如果验证器失败,我需要停止回发。
我已经搜索了很多这个问题,但没有发现任何有用的东西。
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"));
}
}