2013-02-09 48 views
0

當我把在用的UpdatePanel ID「UpdatePanel2」中的「觸發器」,「文本框」控件ID爲「MessageTextBox」,這個「文本框」 ID爲「MessageTextBox」不希望通過AJAX回發。 ID爲「MessageButton」的「Button」控件工作正常,但是這個TextBox不想工作。爲什麼?AJAX觸發與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> 

當我把這個包起來「文本框」控制所有類似的工作,但我更喜歡使用觸發器的其他方式(這不工作像上面的代碼的方式):

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

回答

0

你應該在你AsyncPostBackTrigger指定EventName

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

文本框將觸發回傳當焦點丟失時。

或者,您也可以在Page_Load註冊使用ScriptManager.RegisterAsyncPostBackControl方法您的文本框:

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> 
+0

我試過,但沒有奏效。 – TheChampp 2013-02-09 14:55:04

相關問題