14 messaggi dal 28 agosto 2019
Ciao a tutti,

non riesco a passare il valore da selezionare a una DropDownList (fatta con il componente select2) in una Partial View.

Ho una view chiamata Index che contiene un blocco modal con una PartialView all'interno:

<div class="modal fade update-modal" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg" id="upd-modal">
<div class="modal-content">
<div class="modal-body">
@{
await Html.RenderPartialAsync("~/Views/Core/Contact/_Update.cshtml",Model);
}

</div>
</div>
</div>
</div>

Mentre la PartialView è questa :

@model ContactViewModel


@using (Html.BeginForm("Update", "Contact", FormMethod.Post, new { @class = "form-horizontal form-label-left input_mask" }))
{



<select data-placeholder="Scegli un dipartimento" asp-items="Model.ListJobTitle" style="width:100%" class="mySelect3" id="drop" asp-for="JobTitle.idContactJobTitle"></select>

<script>
$(function () {
$(".mySelect3").select2({
theme: "bootstrap",

});

$('#myselect').val(@id);
$('#myselect').trigger('change.select2');


});


</script>

Speravo che passandogli il value @id dinamico la saelect si aggiornasse ma invece dentro al blocco javascript function entra solo la prima volta quando si carica la view principale Index.
Come posso fare per risolvere questo problema? C'è modo di ricaricare la Partial View ogni volta che viene invocata?

HEEEELP ME! Grazie



11.792 messaggi dal 09 febbraio 2002
Contributi
Ciao e benvenuto nel forum!

Non ho ben chiaro quand'è che appare la modale. Presumo che tu abbia un elenco di righe e la modale compare quando si clicca un bottone "Modifica" in corrispondenza di una particolare riga. È questo il caso?

Se sì, dovresti invocare queste due righe di codice ogni volta che il bottone "Modifica" viene cliccato.
$('#myselect').val(valoreId);
$('#myselect').trigger('change.select2');


Il codice che hai postato non è completo, quindi non so bene quale sia la soluzione appropriata in questo caso.
Potresti metterti in ascolto dell'evento shown.bs.modal ed eseguire il codice da lì. Così andrà in esecuzione ogni volta che la modale viene aperta.

$('.update-modal').on('shown.bs.modal', function (e) {
  let id = $(e.relatedTarget).data('id');
  $('#myselect').val(id);
  $('#myselect').trigger('change.select2');
})


Su ogni bottone "Modifica" metti un attributo data-id="idDellaRigaInQuestione", in modo che si possa poi risalire all'id nel gestore dell'evento shown.bs.modal.

ciao,
Moreno

Enjoy learning and just keep making
14 messaggi dal 28 agosto 2019
Ciao Moreno,

funziona grazie infinite!!
14 messaggi dal 28 agosto 2019
Ciao Moreno,

scusa ma io avrei più dropdownlist da aggiornare, si riesce a mandare più dati dal pulsante modifica (id)?
11.792 messaggi dal 09 febbraio 2002
Contributi
Ciao,

si riesce a mandare più dati dal pulsante modifica (id)?

Puoi aggiungere altri attributi data-* al pulsante modifica. Oppure, se questi dati sono tanti, puoi pur sempre recuperarli dal server facendo una richiesta ajax passando l'id.

ciao,
Moreno

Enjoy learning and just keep making

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.