我正在使用ASP.NET更新面板来检索使用TextChanged的文本框的用户信息,这里是我的代码:
<asp:UpdatePanel runat="server" ID="up1" ChildrenAsTriggers="true"> <ContentTemplate> <asp:TextBox runat="server" ID="loginEmail" Text="Email" CssClass="textBoxes" OnTextChanged="userInfo" AutoPostBack="true"></asp:TextBox> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="loginEmail" EventName="TextChanged" /> </Triggers> </asp:UpdatePanel>
和代码背后:
string url,emailInfo; emailInfo = loginEmail.Text; url = Membership.GetUserNameByEmail(emailInfo); emailText.InnerText = "Email: " + emailInfo; urlText.InnerText = "Webiste: http://www.Elwazefa.com/User/" + url ;
代码不会在textchanged上发火,但它会发生,
在ButtonClick或PageLoad上.
问题是什么?
使用ASP.NET 4.0
解决方法
<asp:TextBox AutoPostBack="true" OnTextChanged="thingId_TextChanged" ID="thingId" runat="server"></asp:TextBox>
当文本框中的焦点丢失时,文本框上的AutoPostBack将触发后退. TextChanged事件将被触发任何后续后退(可以由于按钮单击或文本框重点更改).所以你需要确定
>文本更改后,您正在移出文本框
>无论您更改的控件是更新面板的一部分(可以是不同的更新面板).如果没有任何更新面板,那么这些更改将不会在客户端得到体现.
我的猜测是你可能患有#2.您可以使用Fiddler(或Firebug on FireFox)等工具检查当焦点从文本框中丢失时,浏览器是否正在触发AJAX(XHR)请求.