Вопрос по ajax, .net, textbox – Как сделать так, чтобы ASP.NET TextBox запускал событие onTextChanged в AJAX UpdatePanel?

9

Я пытаюсь заставить 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>

Ваш Ответ

4   ответа
0

истинно & Quot; OnTextChanged = & Quot; TextBox1_TextChanged & Quot;

Оба события необходимы для запуска события изменения текста.

2

Не нужно использовать элементы управления AJAX для проверки доступности. Не обязательно использовать его. Элементы управления AJAX. Мы можем использовать следующий код.

<iframe>
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="true" ontextchanged="TextBox1_TextChanged"></asp:TextBox>

 protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
        RequiredFieldValidator1.ErrorMessage = "";
        Label1.Text = "";
        string name = TextBox1.Text.ToString();
        string constr = "data Source=MURALY-PC\\SQLEXPRESS; database=Online; Integrated Security=SSPI";
        SqlConnection con = new SqlConnection(constr);
        con.Open();
        string query = "select UserName from User_tab where UserName='" + name + "'";
        SqlCommand cmd = new SqlCommand(query, con);
        SqlDataReader dr = cmd.ExecuteReader();
        if (dr.Read())
        {

            Label1.Text = "UserName Already Exists";
        }
        else
        {
            Label1.Text = "";
            Label1.Text = "UserName Available";
        }
        con.Close();


    }
</iframe>
Error: User Rate Limit Exceeded
0

что делает AsyncPostBackTrigger - проверяет, обновляется ли только та часть страницы, когда происходит событие, и не изменяется при его запуске.

Я думаю, что можно делать то, что вы хотите, но вам нужно написать некоторый код javascript для ручного запуска события ... и я даже не хочу думать о том, чтобы заставить это работать.

13
You need to call the _postback() function for your textbox control when the onkeyup is raised using javascript. However, since your textbox is inside your update panel, the textbox will get re-rendered everytime the user hits a key, causing the cursor to loose focus. This will not be usable unless you get your textbox out of the the updatepanel. That may work out for you, as update panels tend to be a bit slow, you may still have usability issues. - I would suggest using an autocomplete component.

P.S : есть один в наборе средств управления asp.net, или вы можете использовать плагин автозаполнения jquery, который я нашел немного лучше.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededdocument.getElementById('<%=tb_Search.ClientID%>');

Похожие вопросы