我试图让一个textBox在每次击键时触发它的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函数。
  • 但是,由于您的文本框位于更新面板内,因此,每当用户按下某个键时,该文本框都会重新呈现,从而导致光标失去焦点。
  • ,除非您将文本框从updatepanel中删除,否则它将无法使用。这可能对您有用,因为更新面板的速度有时会有些慢,您可能仍然会遇到可用性问题。 -我建议使用自动填充组件。

  • P.S :asp.net控制工具包中有一个,或者您可以使用jquery自动完成插件,我发现它要好一些。

    10-07 13:07
    查看更多