.net - net - telerik demo ajax
¿Cómo hacer que un TextBox de ASP.NET se active? ¿Se activa el evento OnTextChanged en un Panel de actualización de AJAX? (3)
Todo lo que hace AsyncPostBackTrigger es asegurarse de que solo esa parte de la página se actualice cuando se active el evento, no cambia cuando se dispara el evento.
Creo que es posible hacer lo que quieras, pero necesitarías escribir algún código de JavaScript para activar el evento manualmente ... y ni siquiera quiero pensar en hacer que funcione.
Estoy intentando hacer que un cuadro de texto active su evento OnTextChanged cada vez que se hace una pulsación de tecla en lugar de disparar solo cuando pierde el foco. Pensé que agregar AsyncPostBackTrigger haría esto, pero aún no funciona. ¿Es lo que estoy tratando de hacer posible? El código está abajo:
<%@ 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>
No necesita usar controles AJAX para verificar la disponibilidad. No es obligatorio utilizar los controles AJAX. Podemos usar el siguiente código.
<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>
- Necesita llamar a la función
_postback()
para su control de cuadro de texto cuando seonkeyup
usando javascript. - Sin embargo, dado que su cuadro de texto está dentro de su panel de actualización, el cuadro de texto se volverá a renderizar cada vez que el usuario presione una tecla, haciendo que el cursor pierda el foco.
- Esto no será utilizable a menos que obtenga su cuadro de texto del panel de actualización. Eso puede funcionar para usted, ya que los paneles de actualización tienden a ser un poco lentos, es posible que aún tenga problemas de usabilidad. - Sugeriría usar un componente de autocompletar.
PD : hay uno en el kit de herramientas de control de asp.net o puede usar el complemento de autocompletar de jquery que he encontrado que es un poco mejor.