Как сделать так, чтобы ASP.NET TextBox запускал событие onTextChanged в AJAX UpdatePanel? - PullRequest
9 голосов
/ 17 июня 2009

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

13 голосов
/ 17 июня 2009
  • Вам нужно вызвать функцию _postback() для вашего элемента управления текстовым полем, когда onkeyup вызывается с помощью javascript.
  • Однако, поскольку ваше текстовое поле находится внутри панели обновления, текстовое поле будет перерисовываться каждый раз, когда пользователь нажимает клавишу, в результате чего курсор теряет фокус.
  • Это не будет применимо, если вы не получите свое текстовое поле из панели обновления. Это может сработать для вас, так как панели обновления имеют тенденцию быть немного медленными, у вас все еще могут быть проблемы с юзабилити. - Я бы предложил использовать компонент автозаполнения.

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

2 голосов
/ 10 августа 2013

Не нужно использовать элементы управления 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>
1 голос
/ 08 января 2019

AutoPostBack = "true" OnTextChanged = "TextBox1_TextChanged"

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

0 голосов
/ 17 июня 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...