AJAX触发与TextBox控件
问题描述:
当我把在用的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>
答
你应该在你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>
我试过,但没有奏效。 – TheChampp 2013-02-09 14:55:04