256 messaggi dal 30 novembre 2004
Ciao a tutti, sto avendo problemi con l'autocomplete di JQuery non riesco a mostrare la label correttamente.

Questa è la funzione Jquery:
$("#txtCognome").autocomplete({
                    source: function (request, response) {
                        $.ajax({
                            url: "eventiSponsor.aspx/GetUtentiSponsor",
                            data: "{ 'q': '" + request.term + "'}",
                            dataType: "json",
                            type: "POST",
                            contentType: "application/json; charset=utf-8",
                            dataFilter: function (data) { return data; },
                            success: function (data) {                                
                                var result = JSON.parse(JSON.stringify(data));
                                response(
                                    $.each(result, function (index) {
                                        return {
                                            label: result[index],
                                            value: result[index] + ""
                                        }
                                    })
                                );
                            }
                        });
                    },
                    select: function (e, i) {
                        //ASSEGNO I VALORI
                        $("#txtCognome").val(i.item.Cognome);
                        $("#txtNome").val(i.item.Nome);
                        $("#txtLuogoNascita").val(i.item.LuogoNascita);
                        $("#txtDataNascita").val(i.item.DataNascita);
                    },
                    minLength: 1
                });


All'inserimento di ogni lettera richiamo tramite ajax un webmethod che mi torna il Json così formato:
WebMethod:
var result = repAccreditiSponsor.FindBy(x => x.UtentiId == _session.GetUtente.UtentiId && x.Cognome.ToLower().StartsWith(q.ToLower())).GroupBy(x => x.Cognome).Select(group => new { Utente = group.Key, Items = group.ToList() }).ToList();
            var jsonSerialiser = new JavaScriptSerializer();
            var json = jsonSerialiser.Serialize(result.Select(x=> new { label = x.Items[0].Cognome + " " + x.Items[0].Nome, Cognome = x.Items[0].Cognome, Nome = x.Items[0].Nome, DataNascita = x.Items[0].DataNascita.ToShortDateString(), LuogoNascita = x.Items[0].LuogoNascita}).ToList());
            return json;

Json:
[{"label":"Pluto Papero","Cognome":"Pluto","Nome":"Papero","DataNascita":"06/12/2018","LuogoNascita":"Milano"},{"label":"Pippo Beppe","Cognome":"Pippo","Nome":"Beppe","DataNascita":"29/12/2018","LuogoNascita":"Roma"}]


Quello che mi compare nell'auto complete è tutto il record Json. Ad esempio: "label":"Pluto Papero","Cognome":"Pluto","Nome":"Papero","DataNascita":"06/12/2018","LuogoNascita":"Milano"

Io vorrei visualizzare solo label e alla selezione recuperare gli altri dati.
Qualcuno mi sa aiutare? Grazie in anticipo
256 messaggi dal 30 novembre 2004
Ciao sono arrivato alla soluzione che riporto qui:
Al WebMethod ho aggiunto:

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]

La funzione JQuery è diventata:

$("#txtCognome").autocomplete({
                    source: function (request, response) {
                        $.ajax({
                            url: "eventiSponsor.aspx/GetUtentiSponsor",
                            data: "{ 'q': '" + request.term + "'}",
                            dataType: "json",
                            type: "POST",
                            contentType: "application/json; charset=utf-8",
                            dataFilter: function (data) { return data; },
                            success: function (data) {                                
                                response($.map(data.d, function (item) {
                                    return item
                                }))
                            }
                        });
                    },
                    select: function (e, i) {
                        //ASSEGNO I VALORI
                        $("#txtCognome").val(i.item.Cognome);
                        $("#txtNome").val(i.item.Nome);
                        $("#txtLuogoNascita").val(i.item.Luogonascita);
                        $("#txtDataNascita").val(i.item.DataNascita);
                    },
                    minLength: 1
                });


Grazie a tutti cmq

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.