Principales respuestas
Texbox Autocomplete JQuery con dos parametros

Pregunta
-
Buena tarde a todos me pudieran ayudar de favor, estoy intentando implementar en mi aplicación un textbox con autocomplete hasta ahorita todo bien conforme a este articulo:
Implement jQuery AutoComplete TextBox from database using AJAX PageMethods in ASP.Net
La idea es que yo tengo variables de session después de un login estas variables de sesión recuperan un id de un país como en la tabla Customers de la base de datos Northwind
Yo solo quiero que en el textbox solo salgan los clientes de la variable de session que la incluyo cuando el cliente inicia session después de un login esa variable indica de que país es. Por ejemplo si el cliente es de México solo deberían de aparecer en el texbox los clientes de México:
Ana Trujillo
Antonio Moreno
Francisco Chang
etc..
¿Como puedo pasarle un parámetro más a este código y que este parámetro sea la variable de session que recupero al iniciar despues del login dentro de la pagina default en el page_load.?
string useridpais = (string)Session["IdUsupais"];
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CS.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <style type="text/css"> body { font-family: Arial; font-size: 10pt; } </style> </head> <body> <form id="form1" runat="server"> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.0.min.js" type="text/javascript"></script> <script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.9.2/jquery-ui.min.js" type="text/javascript"></script> <link href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.9.2/themes/blitzer/jquery-ui.css" rel="Stylesheet" type="text/css" /> <script type="text/javascript"> $(function () { $("[id$=txtSearch]").autocomplete({ source: function (request, response) { $.ajax({ url: '<%=ResolveUrl("~/CS.aspx/GetCustomers") %>', data: "{ 'prefix': '" + request.term + "'}", dataType: "json", type: "POST", contentType: "application/json; charset=utf-8", success: function (data) { response($.map(data.d, function (item) { return { label: item.split('-')[0], val: item.split('-')[1] } })) }, error: function (response) { alert(response.responseText); }, failure: function (response) { alert(response.responseText); } }); }, select: function (e, i) { $("[id$=hfCustomerId]").val(i.item.val); }, minLength: 1 }); }); </script> Enter search term: <asp:TextBox ID="txtSearch" runat="server" /> <asp:HiddenField ID="hfCustomerId" runat="server" /> <asp:Button ID="Button1" Text="Submit" runat="server" OnClick="Submit" /> </form> </body> </html>
código cs
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.Services; using System.Configuration; using System.Data.SqlClient; public partial class _Default : System.Web.UI.Page { [WebMethod] public static string[] GetCustomers(string prefix) { List<string> customers = new List<string>(); using (SqlConnection conn = new SqlConnection()) { conn.ConnectionString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; using (SqlCommand cmd = new SqlCommand()) { cmd.CommandText = "select ContactName, CustomerId from Customers where ContactName like @SearchText + '%'"; cmd.Parameters.AddWithValue("@SearchText", prefix); cmd.Connection = conn; conn.Open(); using (SqlDataReader sdr = cmd.ExecuteReader()) { while (sdr.Read()) { customers.Add(string.Format("{0}-{1}", sdr["ContactName"], sdr["CustomerId"])); } } conn.Close(); } } return customers.ToArray(); } protected void Submit(object sender, EventArgs e) { string customerName = Request.Form[txtSearch.UniqueID]; string customerId = Request.Form[hfCustomerId.UniqueID]; ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Name: " + customerName + "\\nID: " + customerId + "');", true); } }
Gracias por responder.
saludos.
Hugo Damian
Respuestas
-
hola
Si estas realizando una llamada ajax podrias enviar mas parametros
El valor de la Session podrias asignarlo en un <asp:Hidden Id="useridpais " ..>
asi despues usas
var useridpais = $("#<%=useridpais.ClientID%>").val();
entonces este valor podrias pasarlo al ajax
var data = {
"prefix": request.term,
"paisId": useridpais
};$.ajax({ url: '<%=ResolveUrl("~/CS.aspx/GetCustomers") %>', data: JSON.stringify(data), dataType: "json", type: "POST",
en el webmethod agregas el parametros
[WebMethod] public static string[] GetCustomers(string prefix, int paisId) {
usas ese valor en el filtro de los datos
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Carlos_Ruiz_M martes, 7 de mayo de 2019 15:57
- Marcado como respuesta Hugo Damian jueves, 9 de mayo de 2019 21:44
Todas las respuestas
-
Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te comento que estaremos realizando una revisión a profundidad acerca del inconveniente que se te está presentando.
Proporcionaremos una respuesta lo más pronto posible.
Gracias por usar los foros de MSDN.
Carlos Ruiz
____
Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.
Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. -
hola
Si estas realizando una llamada ajax podrias enviar mas parametros
El valor de la Session podrias asignarlo en un <asp:Hidden Id="useridpais " ..>
asi despues usas
var useridpais = $("#<%=useridpais.ClientID%>").val();
entonces este valor podrias pasarlo al ajax
var data = {
"prefix": request.term,
"paisId": useridpais
};$.ajax({ url: '<%=ResolveUrl("~/CS.aspx/GetCustomers") %>', data: JSON.stringify(data), dataType: "json", type: "POST",
en el webmethod agregas el parametros
[WebMethod] public static string[] GetCustomers(string prefix, int paisId) {
usas ese valor en el filtro de los datos
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Carlos_Ruiz_M martes, 7 de mayo de 2019 15:57
- Marcado como respuesta Hugo Damian jueves, 9 de mayo de 2019 21:44
-
-