0

データベースからの情報を表示し、ユーザーが新しいアイテムを追加できるようにする.aspxページがあります。

このページには更新パネルが含まれています。そのupdatepanelには、グリッドビューといくつかの入力要素を含むパネルがあります。

<asp:Panel runat="server" ID="NewPersonPanel" DefaultButton="NewPersonButton" Visible="false">
    <div id="newItemForm">
        <label for="NewPersonName">Name:</label>     
        <asp:TextBox ID="NewPersonName" runat="server" MaxLength="50" />         
        <asp:RequiredFieldValidator ID="RequiredName" EnableClientScript="true" ControlToValidate="NewPersonName" ErrorMessage="Name must not be empty" ValidationGroup="NewPersonValidationGroup" runat="server" /><br />

        <label for="NewPersonFirstName">First Name:</label>     
        <asp:TextBox ID="NewPersonFirstName" runat="server" MaxLength="50" />         
        <asp:RequiredFieldValidator ID="RequiredFirstName" EnableClientScript="true" ControlToValidate="NewPersonFirstName" ErrorMessage="First name must not be empty" ValidationGroup="NewPersonValidationGroup" runat="server" /><br />

        <div id="newPersonControls">
            <asp:LinkButton ID="NewPersonButton" ValidationGroup="NewPersonValidationGroup" runat="server" OnCommand="PersonGrid_Insert">Create</asp:LinkButton>
            <asp:LinkButton ID="HideInputFormButton" runat="server" OnCommand="HideInputForm">Cancel</asp:LinkButton>
        </div>
    </div>
</asp:Panel>

検証要素がなくても、ページは正常に機能します。検証を追加すると、状況がおかしくなります。フィールドが空のときに[作成]ボタンをクリックしようとすると、赤い検証メッセージが表示されますが、これによりページ上のすべてのポストバックが強制終了されます。フィールドに入力すると、赤いテキストは消えますが、ボタンを使用できなくなります。新しい人の作成、フォームの削除、グリッドの並べ替え、グリッドのフィルタリング、グリッドページング....すべてが機能しなくなります。デバッガーを使用すると、コードの背後にある呼び出しがなくなったように見えるため、検証に失敗すると、JavaScriptで何かが行われ、他のすべての「__doPostBack」メソッドが失敗するように見えます。

私はこのスレッドを見つけました:asp.net:検証が失敗した後、ポストバックが無効になりました が、そこには何の答えもありませんでした。

4

1 に答える 1

2

検証を設定するため、ポストバックすることはできません。

ただし、を使用してそれらを無効にすることができますValidatorEnable(object,true/false)

これは2つのパラメータを取ります。1つはオブジェクト、2つ目は有効にするか無効にするかです。

あなたの場合、それは誤りです。

ただし、フォーム内のすべてのコントロール(検証を設定したもの)に対してこれを行う必要があります。

于 2012-10-15T12:29:09.677 に答える