Asp.net
ASP.NET OnTextChanged 未從更新面板內部觸發
我正在使用 ASP.NET 更新面板使用文本框的 on 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(或 FireFox 上的 Firebug)之類的工具來檢查當焦點從文本框中失去時瀏覽器是否正在觸發 AJAX (XHR) 請求。