0

更新パネルがあり、更新パネル内には、ドロップダウンと、ドロップダウンに関連付けられた必須フィールドバリデーターと、ドロップダウンの自動ポストバックが true に設定されています。ユーザーがオプションを変更するたびに、updatepanelでautopost backが発生します..ユーザーがドロップダウンから空のアイテムを選択した場合、サーバーにポストバックせず、バリデーターが起動する必要があります....しかし、私の場合、バリデーターが起動します完全であり、ポストバックもあり、ポストバック後に必要なフィールド Validaor 状態が 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 に答える