Asp.net

如何讓 ASP.NET TextBox 觸發它在 AJAX UpdatePanel 中觸發 onTextChanged 事件?

  • June 17, 2020

我試圖讓文本框在每次擊鍵時觸發它的 onTextChanged 事件,而不是僅在失去焦點時觸發。我認為添加 AsyncPostBackTrigger 可以做到這一點,但它仍然無法正常工作。我想要做的甚至可能嗎?程式碼如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Items.aspx.cs" MasterPageFile="~/MMPAdmin.Master" Inherits="MMPAdmin.Items" %>
<asp:Content ID="content1" runat="server" ContentPlaceHolderID="ContentPlaceHolder1">
<asp:ScriptManager ID="sm_Main" runat="server" />
   <div style="left:10px;position:relative;width:100%;overflow:hidden">
       <asp:UpdatePanel ID="up_SearchText" runat="server">
           <Triggers>
                <asp:AsyncPostBackTrigger ControlID="tb_Search" EventName="TextChanged" />
           </Triggers>
           <ContentTemplate>
               <div style="position:relative;float:left">
                   <b style="font-size:xx-large">Items</b>(<a href="Item.aspx">Add New</a>)
               </div>
               <div style="right:25px;position:absolute; top:30px">
                   Search: <asp:TextBox ID="tb_Search" runat="server" Width="200" OnTextChanged="UpdateGrid" AutoPostBack="true" />
               </div>
               <br />
               <div>
                   <asp:GridView runat="server" AutoGenerateColumns="true" ID="gv_Items" AutoGenerateEditButton="true" AutoGenerateDeleteButton="true" />
               </div>
           </ContentTemplate>
       </asp:UpdatePanel>
   </div>
</asp:Content>
  • 當使用 javascript 引發時,您需要_postback()為您的文本框控制項呼叫該函式。onkeyup
  • 但是,由於您的文本框位於更新面板內,因此每次使用者點擊某個鍵時都會重新渲染文本框,從而導致游標失去焦點。
  • 除非您將文本框從更新面板中取出,否則這將無法使用。這可能對您有用,因為更新面板往往有點慢,您可能仍然存在可用性問題。- 我建議使用自動完成組件。

PS:在 asp.net 控制工具包中有一個,或者您可以使用我發現更好一點的 jquery 自動完成外掛。

引用自:https://stackoverflow.com/questions/1009086