Kullanıcı adlarını tutan bir dizi açılır listelem var. Her ddl aynı modelden üretilir (Aynı bilgileri tutarlar). Bununla birlikte, her kullanıcı sadece bu formda bir kez seçilmelidir. Hangi kullanıcıların seçildiğini kontrol etmenin ve açılır listelerde görünmesini durdurmanın bir yolu var ve değer bir dll'den kaldırılırsa tekrar yeniden görünecek.Diğer açılır listelerde seçilen öğelere göre açılır listeden öğeleri kaldırın
Görünüm
@using (Html.BeginForm("Submit", "Booking", FormMethod.Post))
{
<div id="modalbox" class="modal">
<div class="modal-dialog">
<div class="modal-content">
<div id="modal-header" class="modal-header">
<h1>Register New Booking</h1>
</div>
<div class="modal-body">
<table id="booking-model-table" class="table table-condensed table-striped table-bordered">
<tr>
<td>Person1:</td>
<td>
@{
@Html.DropDownListFor(m => m.User, Model.UserList, "Select User", new { @class = "form-control", @id = "idP1" })
@Html.HiddenFor(m => m.SelectedUserText)
@Html.ValidationMessageFor(m => m.User, "", new { @class = "text-danger" })
}
</td>
</tr>
<tr>
<td>Person2:</td>
<td>
@{
@Html.DropDownListFor(m => m.User, Model.UserList, "Select User", new { @class = "form-control", @id = "idP2" })
@Html.HiddenFor(m => m.SelectedUserText)
@Html.ValidationMessageFor(m => m.User, "", new { @class = "text-danger" })
}
</td>
</tr>
<tr>
<td>Person3:</td>
<td>
@{
@Html.DropDownListFor(m => m.User, Model.UserList, "Select User", new { @class = "form-control", @id = "idP3" })
@Html.HiddenFor(m => m.SelectedUserText)
@Html.ValidationMessageFor(m => m.User, "", new { @class = "text-danger" })
}
</td>
</tr>
<tr>
<td>Person4:</td>
<td>
@{
@Html.DropDownListFor(m => m.User, Model.UserList, "Select User", new { @class = "form-control", @id = "idP4" })
@Html.HiddenFor(m => m.SelectedUserText)
@Html.ValidationMessageFor(m => m.User, "", new { @class = "text-danger" })
}
</td>
</tr>
</table>
</div>
<div class="modal-footer">
@Html.AntiForgeryToken()
<button class="btn btn-default" data-dismiss="modal">Close</button>
<button class="btn btn-primary" type="submit" value="Submit">Ok</button>
</div>
</div>
</div>
</div>
}
Modeli
/// <summary>
/// User List
/// </summary>
[Display(Name = "Users")]
public string User { get; set; }
public IEnumerable<SelectListItem> UserList { get; set; }
public string SelectedUserText { get; set; }
bu mümkün olabilir mi? Bir onchange olayı içinde öğeyi kaldırmak için bazı javascript eklemeyi düşünüyordum, ancak her ddl aynı modelden çıktığında yanıtı sileceğini hayal ediyorum.
Güncelleme: Ben JavaScript kullanarak ve her açılır koltuk seçimini değer katarak, şu anda benim için çalışan olası bir çözüm buldu.
@Html.DropDownListFor(m => m.User, Model.UserList, "Select User", new { @class = "form-control seat-select", @id = "idP1", @onchange = "cleanUsers(this);"
JavaScript dosyası:
function cleanUsers(ddl) {
var val = ddl.options[ddl.selectedIndex].value;
var vOldVal = $("#" + ddl.id).attr("data-selected");
$("#" + ddl.id).attr("data-selected", val);
//If a user is selected disable them
if (val != 0) { $(".seat-select option[value='" + val + "']").attr("disabled", true); }
//If the previous value has been defined, enable the user again
if (vOldVal != undefined) { $(".seat-select option[value='" + vOldVal + "']").attr("disabled", false); }
}
JS'nizdeki 'ddl 'yerine ne kullandınız? –
Üzgünüz, bunu tekrar söyleyebilir misiniz? Ne anlatmak istediğinden emin değilim? – Ben
Javascript'inizde 'function cleanUsers (ddl)' dır .. 'ddl' olarak kullandınız mı yoksa bunun için birşeyler mi yerine koydunuz –