Blogalia

"En el arte marcial como en la vida diaria. En la vida diaria como en un arte marcial."

Aikido

Sígueme en Twitter

<Noviembre 2017
Lu Ma Mi Ju Vi Sa Do
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      


Todas las Historias

VELOCIDAD DE ESCAPE

Inicio > Historias > AUTOCOMPLETADO AJAX EN DOS PATADAS

2008-06-18

AUTOCOMPLETADO AJAX EN DOS PATADAS

Como es evidente, con Visual Studio 2008. Tras seguir los pasos de esta entrada anterior donde se indica cómo tener funcionando el Ajax Control Toolkit, tras añadir el textbox hemos de añadir un ScriptManager. El código de nuestro formulario queda más o menos así:

  <form id="form1" runat="server">

    
<div>

        
<asp:ScriptManager ID="ScriptManager1" runat="server">

        
</asp:ScriptManager>

         
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

         
<br />

<
cc1:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server"

            TargetControlID
="TextBox1"

            ServicePath
="ListaDeClientes.asmx" 

            CompletionInterval
="10"

            CompletionSetCount
="10"

            ServiceMethod
="ObtenerClientes"

            MinimumPrefixLength
="1" />

        </
div>

    
</form>



Añadimos un servicio web al proyecto que va a alojare la lógica que nos devuelve los datos. En este caso el origen puede ser muy variado, tanto como se nos ocurra, pero yo me decanto por lo que en principio es más lógico: la devolución de una serie de datos de una base de datos SQL Server en función del los valores introducidos en el textbox.

Importante a tener en cuenta es que el ServidePath del AutoCompleteExtender en la página Default.aspx tenga el valor del servicio web que hemos creado y ServiceMethod apunte al WebMethod dentro del mismo que nos va a devolver los datos.

También es importante que el Servicio Web referencie el ScriptService tal y como sigue para poder funcionar. De otro modo no lo hará.
  
[System.Web.Script.Services.ScriptService] 

Solamente queda añadir el WebMethod correspondiente dentro de nuestro Servicio Web para obtener los datos. Un ejemplo muy sencillo y básico:


 [WebMethod]

    
public string[] ObtenerClientes(string prefixText)



    {

        
int count 10;

        string 
sql "Select * from clientes Where apellidos like @prefixText";

        
SqlDataAdapter da = new SqlDataAdapter(sql, "Data Source=miservidor;Initial Catalog=mibasededatos;User Id=miusuario;Password=miclave;");

        
da.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 50).Value prefixText + "%";

        
DataTable dt = new DataTable();

        
da.Fill(dt);

        string
[] items = new string[dt.Rows.Count];

        int 
0;

        foreach 
(DataRow dr in dt.Rows)

        {

            items.SetValue(dr[
"NOMBRE"].ToString() + ' ' + dr["apellidos"].ToString(), i);

            
i++;

        
}

        
return items.ToArray()

    



Lo bueno, si breve, dos veces bueno.


Gracias a Code Colorizer de: CarlosAg

Programación | jomaweb | 1 Comentarios | Enlace


Referencias (TrackBacks)

URL de trackback de esta historia http://jomaweb.blogalia.com//trackbacks/58071

Comentarios

1
De: Anónimo Fecha: 2008-06-18 16:26

"Como es evidente, con Visual Studio 2008". O con Ruby on Rails. O con cualquier otro framework que traiga ese tipo de generadores de javascript.



Nombre
Correo-e
URL
Dirección IP: 54.198.108.19 (519c7a46e7)
Comentario
¿Cuánto es: mil + uno?