Je tiens à remercier DotNetMatt pour ces différents liens.
Cela n'a pas été facile, mais j'y suis arrivé.
Voici le code en place.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
<script type="text/javascript">
$(document).ready(function () {
$(".addRow").click(function () {
var rowCount = $('.CompetenceRow').length;
$("#tableauCompetences").append('<div class="CompetenceRow"><a href="javascript:void(0);" class="remRow">Supprimer</a><select name="Competences[' + rowCount + ']" class="CompetenceType">@foreach (Competence item in Model.SelectableCompetences){<option value="@item.Id">@item.Nom</option>}<a href="javascript:void(0);" class="remRow">Supprimer</a></div>');
});
$("#tableauCompetences").on('click', '.remRow', function () {
$(this).closest('.CompetenceRow').remove();
})
});
</script> |
1 2 3 4 5 6 7 8 9 10 11
|
<div id="tableauCompetences">
@for (int i = 0; i < Model.Competences.Count; i++)
{
<div class="CompetenceRow">
<a href="javascript:void(0);" class="remRow">Supprimer</a>
@Html.DropDownListFor(o => o.Competences[i], new SelectList(Model.SelectableCompetences, "Id", "Nom", Model.Competences[i]))
</div>
}
</div>
<a href="javascript:void(0);" class="addRow">Ajouter compétence</a> |
La difficulté que j'ai rencontré et qu'au départ j'avais tenté ceci:
@Html.DropDownListFor(o => o.Competences[i], Model.SelectList))
Bien que Model.SelectList soit une SelectList, lors de l'édition, je n'avais jamais l'item correspondant de sélectionner. Alors que si j'affichais la valeur de Model.Competences[i] correspondant, j'avais bien l'identifiant de compétence.
En regardant le code Html généré, j'ai constaté qu'il n'y avais jamais de Selected sur les <Option>.
J'ai cherché et j'ai trouvé ceci pour que ça fonctionne.
new SelectList(Model.SelectableCompetences, "Id", "Nom", Model.Competences[i])
Ou bien y a-t-il une autre solution moins tricky?
Partager