0

ID "UpdatePanel2" の UpdatePanel の "Triggers" に ID "MessageTextBox" の "TextBox" コントロールを配置すると、この ID "MessageTextBox" の "TextBox" は AJAX 経由でポストバックされません。ID「MessageButton」の「ボタン」コントロールは正常に機能しますが、この TextBox は機能しません。なんで ?

 <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <br />

         <asp:TextBox ID="MessageTextBox" runat="server" AutoPostBack="true" Height="150px" Width="400px"></asp:TextBox>

    <br />    
        <asp:Button ID="MessageButton" runat="server" Text="Send" OnClick="MessageButton_Click" />
    <br />
    <br />
    <asp:UpdatePanel ID="UpdatePanel2" runat="server">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="MessageButton" />
            <asp:AsyncPostBackTrigger ControlID="MessageTextBox" />
        </Triggers>
        <ContentTemplate>
             <asp:DataList ID="ChatDataList" runat="server" >
        <HeaderTemplate>
            <table style="border:1px solid red">
        </HeaderTemplate>
        <ItemTemplate>
                <tr>
                    <td><asp:Label ID="lblRaterName" runat="server" Text='<%#      Eval("Text")%>'></asp:Label></td>
                </tr>
        </ItemTemplate>                 
        <FooterTemplate>
            </table>
        </FooterTemplate>
    </asp:DataList>
        </ContentTemplate>
    </asp:UpdatePanel>

この「TextBox」コントロールをこのようにラップすると、すべて機能しますが、トリガーを使用する他の方法が好きです(上記のコードのように機能しない方法):

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
             <asp:TextBox ID="MessageTextBox" runat="server" Height="150px" Width="400px"></asp:TextBox>
        </ContentTemplate>
    </asp:UpdatePanel>
4

1 に答える 1

0

で次を指定する必要がありEventNameますAsyncPostBackTrigger

<asp:AsyncPostBackTrigger ControlID="MessageTextBox" EventName="TextChanged" />

TextBox は、フォーカスが失われた場合にのみポストバックをトリガーします。

または、 ScriptManager.RegisterAsyncPostBackControlメソッドを使用してテキスト ボックスを登録できますPage_Load

ScriptManager1.RegisterAsyncPostBackControl(MessageTextBox);

または、スクリプトを使用して更新パネルのポストバックを強制することもできます:

<script type="text/javascript">
        function refreshUpdatePanel() {
            __doPostBack('<%= UpdatePanel2.UniqueID %>', '');
        }
</script>
<asp:TextBox ID="MessageTextBox" runat="server" AutoPostBack="true" Height="150px" Width="400px" onblur="javascript:refreshUpdatePanel()"></asp:TextBox>
于 2013-02-09T14:51:18.993 に答える