0

次の ASP パネルがあります

<asp:UpdatePanel ID = "UpdatePanel1" runat = "server">
      <ContentTemplate>
            <asp:TextBox ID="txtNumber" runat="server" ToolTip="The Assignment's Number" ValidationGroup="updateAssignment" AutoPostBack="True" ontextchanged="txtNumber_TextChanged"></asp:TextBox>

      </ContentTemplate>
</asp:UpdatePanel>

スクリプト マネージャーも存在しますが、ページはまだポストバックを実行しています。その事は他のページでは起こりません。コントロールがテキストボックスである更新パネルにトリガーを追加しようとしましたが、それでもポストバックを行います。私を助けてください。

4

1 に答える 1

0

まず、クライアント側のコードではなく、サーバー側のコードです。textchanged イベントは、js の onchange イベントとは大きく異なります。このコードは、フォーカスを失うと発生します。テキストボックスで autopostback を true に設定する必要がありますが、それをトリガーとして含める必要があります。

 <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:TextBox ID="TextBox1" AutoPostBack="true" runat="server" ontextchanged="TextBox1_TextChanged"></asp:TextBox>
        </ContentTemplate>
        <Triggers>
        <asp:AsyncPostBackTrigger ControlID="TextBox1" />
        </Triggers>
        </asp:UpdatePanel>

テキストボックスをに設定するだけでは機能しないことに気付いたようAutopostback=trueに、それ以外ではUpdatePanelポストバックが発生します。ただし、updatepanel をラップして AsyncPostBackTrigger を指定ControlIDし、問題のテキスト ボックスに割り当てると、うまくいきます。これを chrome と IE でテストしたところ、動作します。

于 2012-05-11T18:39:49.793 に答える