1.504 messaggi dal 27 dicembre 2005
Ciao,
sto usando questa griglia per fare delle ricerche e ho un dubbio/problema.

Ho fatto una form con dei campi per la ricerca, creato una action che in post restituisce i dati alla grid e funziona.

Ora però se cambio pagina tra i risultati della griglia (chiamata GET) non mi ritornano i parametri nella form per fare la ricerca e quindi cambiare pagina con i risultati iniziali.

Come devo fare ?
1.504 messaggi dal 27 dicembre 2005
Inoltre mi son oaccorto di una cosa oggi.

Ho delle select che carico a runtime tramite Ajax, le classiche cascading dropdown.

Dopo che sono state popolate esegui come detto prima una post su una action per cercare i risultati.

Ovviamente dopo che torna la post mi resetta tutte le combo,come dovrei fare poer non fare resettare ?
383 messaggi dal 23 aprile 2007
Per quanto riguarda la perdita delle selezione durante la get: memorizza l'id selezionato e aggiungilo come parametro così che tu possa memorizzarlo ed inviarlo nella response(per poi riselezionarlo lato client)

Sul cambio pagina, non puoi inviarti tutti i parametri, compresi quelli di filtro, sulla action che lo effettua?

Posta un po' di codice, sarà più semplice darti un'idea.

Sergio
Modificato da historyX il 26 maggio 2015 09.25 -
1.504 messaggi dal 27 dicembre 2005
 <div class="panel-body">
        @Using Html.BeginForm("Ricerca", "Home", New With {.ReturnUrl = ViewBag.ReturnUrl}, FormMethod.Post, New With {.class = "form-horizontal", .role = "form"})
            @Html.AntiForgeryToken()
            @<text>
                @Html.ValidationSummary(True, "", New With {.class = "text-danger"})
                <div class="form-group ">
                    @Html.Label("Descrizione", New With {.class = "col-md-2 control-label"})
                    <div class="col-md-10">
                        @Html.DropDownList("descrizione", TryCast(ViewBag.descrizioni, List(Of SelectListItem)), "Selezionare valore", New With {.class = "form-control"})                       
                  </div>
                </div>
        <div class="form-group ">
            @Html.Label("Località", New With {.class = "col-md-2 control-label"})
            <div class="col-md-10">
                @Html.DropDownList("localita", New SelectList(String.Empty, "Value", "Text"), "Seleziona tutti", New With {.class = "form-control", .disabled = "disabled", .style = "display:none;"})
            </div>
        </div>
        <div class="form-group ">
            @Html.Label("Piano", New With {.class = "col-md-2 control-label"})
            <div class="col-md-10">
                @Html.DropDownList("piano", New SelectList(String.Empty, "Value", "Text"), "Seleziona tutti", New With {.class = "form-control", .disabled = "disabled", .style = "display:none;"})
            </div>
        </div>
        <div class="form-group ">
            @Html.Label("Stanza", New With {.class = "col-md-2 control-label"})
            <div class="col-md-10">
                @Html.DropDownList("stanza", New SelectList(String.Empty, "Value", "Text"), "Seleziona tutti", New With {.class = "form-control", .disabled = "disabled", .style = "display:none;"})
            </div>
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Ricerca" class="btn btn-default" />              
            </div>
        </div>


<script type="text/javascript">
        $(document).ready(function ()
        {

            $("#descrizione").change(function ()
            {

                //            alert($("#descrizione").val());

                if ($("#descrizione option:selected").val() == '')
                {
                    $("#localita").empty();
                    $("#localita").attr('disabled', true);
                    $("#localita").hide();
                    return;
                }

                $("#piano").empty();
                $("#piano").attr('disabled', true);
                $("#piano").hide();

                $("#localita").empty();
                $("#localita").removeAttr("disabled");
                $("#localita").show();

                $.ajax({
                    type: 'POST',
                    url: '@Url.Action("recupera_localita")', // we are calling json method

                    dataType: 'json',

                    data: { id: $("#descrizione").val() },

                    success: function (states)
                    {
                        // states contains the JSON formatted list
                        // of states passed from the controller

                        $("#localita").append('<option value="">Seleziona tutti</option>');

                        $.each(states, function (i, state)
                        {
                            $("#localita").append('<option value="' + state.Value + '">' +
                                 state.Text + '</option>');
                            // here we are adding option for States

                        });
                    },
                    error: function (ex)
                    {
                        alert('Impossibile recuperare le località' + ex);
                    }
                });
                return false;
            })
        });
</script>
1.504 messaggi dal 27 dicembre 2005
historyX ha scritto:
Per quanto riguarda la perdita delle selezione durante la get: memorizza l'id selezionato e aggiungilo come parametro così che tu possa memorizzarlo ed inviarlo nella response(per poi riselezionarlo lato client)

Sul cambio pagina, non puoi inviarti tutti i parametri, compresi quelli di filtro, sulla action che lo effettua?

Posta un po' di codice, sarà più semplice darti un'idea.

Sergio
Modificato da historyX il 26 maggio 2015 09.25 -


Stavo pensando se la ricerca la faccio tramite Ajax invece che di un post normale i valori delle select non li dovrei perdere giusto ?

Per fare questo però dovrei fare una chiamata Ajax che restituisca solo una partialview ?

Per quanto riguarda il caricamento della griglia, quando cambia pagina lui fa una richiesta get alla stessa action (post) per recuperare i dati.
Forse in GET dovrei salvare il model nella session ?

Grazie.
383 messaggi dal 23 aprile 2007
Si, facendo una chiamata ajax la pagina resta nel browser, quindi non cambiano eventuale selezioni eseguite dall'utente.

Io in genere faccio restituire solo i dati poi creo la griglia con qualche script lato client(al momento uso knockoutjs), ma è una scelta tra le tante; a mio avviso così facendo si può dare alla pagina una migliore user experience.

Come detto, non sono un esperto mvc, e se non ricordo male in GET non viene passato il modello, quindi il primo problema dovrebbe essere quello di farti inviare le informazioni riguardanto i filtri lato server.
Non conosco nello scecifico il componente Grid.Mvc (è questo giusto: https://gridmvc.codeplex.com/ ?), dovresti riuscire a capire se puoi modificare a runtime, e lato client(devi aggiornarnare le info ogni volta che l'utente modifica le selezioni sulla pagina), l'url di get sul cambio pagina.

Sergio
1.504 messaggi dal 27 dicembre 2005
historyX ha scritto:
Si, facendo una chiamata ajax la pagina resta nel browser, quindi non cambiano eventuale selezioni eseguite dall'utente.

Io in genere faccio restituire solo i dati poi creo la griglia con qualche script lato client(al momento uso knockoutjs), ma è una scelta tra le tante; a mio avviso così facendo si può dare alla pagina una migliore user experience.

Come detto, non sono un esperto mvc, e se non ricordo male in GET non viene passato il modello, quindi il primo problema dovrebbe essere quello di farti inviare le informazioni riguardanto i filtri lato server.
Non conosco nello scecifico il componente Grid.Mvc (è questo giusto: https://gridmvc.codeplex.com/ ?), dovresti riuscire a capire se puoi modificare a runtime, e lato client(devi aggiornarnare le info ogni volta che l'utente modifica le selezioni sulla pagina), l'url di get sul cambio pagina.

Sergio


Ho fatto tutto e funziona, ma purtroppo per quanto riguarda la paginazione e il filtro dati questa griglia mi sembra di capire che non gestisca chiamate ajax, infatti se cambio pagina mi richiama la action index e quindi mi sovrascrive tutto.
1.504 messaggi dal 27 dicembre 2005
Nulla non ci riesco, qualcuno che sa consigliarmi una griglia per mvc che supporti paginazione ecc tramite ajax ?

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.