1

AutoPostback が true に設定されたプルダウンとバリデーターがあります。プルダウンから「無効な」値を選択すると、バリデータ メッセージが短時間表示された後、ポストバックが発生し、エラー メッセージが表示されなくなりました。これは私のコードです:

<asp:TextBox ID="SerialFrom_txt" runat="server" BackColor="White" BorderColor="#188F3E"
                            BorderStyle="Solid" BorderWidth="3px" Width="200px" OnTextChanged="SerialFrom_txt_TextChanged"
                            AutoPostBack="true"></asp:TextBox>
                        <asp:RegularExpressionValidator ID="SerialFrom_rv" runat="server" ValidationExpression="^[a-zA-Z]{2}[0-9]{7}$"
                            Text="error" ControlToValidate="SerialFrom_txt" />

ポストバックの背後にあるコードは次のとおりです。

protected void SerialFrom_txt_TextChanged(object sender, EventArgs e)
    {

            if (string.Compare(RoleFrom_lbl.Text, SerialFrom_txt.Text) > 0)
            {
                Error_lbl.Text = "Serial From must be greater than " + RoleFrom_lbl.Text + "!";
                SerialFrom_txt.BackColor = System.Drawing.Color.FromName("red");
                SAVE_btn.Enabled = false;
            }

            else
            {
                Error_lbl.Text = "";
                SerialFrom_txt.BackColor = System.Drawing.Color.FromName("white");
                SAVE_btn.Enabled = true;
            }

    }

だから私は何をすべきか教えてください?

4

2 に答える 2

3

次のように、CausesValidation="true" を Textbox に追加してみてください。

<asp:TextBox CausesValidation="true" ID="SerialFrom_txt" runat="server" BackColor="White" BorderColor="#188F3E" BorderStyle="Solid" BorderWidth="3px" Width="200px" OnTextChanged="SerialFrom_txt_TextChanged" AutoPostBack="true"></asp:TextBox>
于 2012-09-30T09:13:04.123 に答える
0

サーバー側でもコントロールの IsValid 状態を設定する必要があります。

  • CustomValidatorコントロールをフォームに追加します。

  • CustomValidator.ControlToValidate を「SerialFrom_txt」に設定します。

  • SerialFrom_txt_TextChanged イベントの代わりに CustomValidator.ServerValidate イベントを処理します。

  • ServerValidate EventArgs args.IsValid プロパティ内でコントロールの IsValid 状態を設定します。

于 2012-09-30T09:14:20.440 に答える