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