カスケード付きの 3 つの剣道ドロップダウン リストがあります。最初と 2 番目のものは正しいですが、3 番目のものはページの読み込み時にオプション ラベルを表示しません。
ご覧のとおり、コンソールに表示されるように、「Ciudad」ドロップダウンリストには optionLabel が表示されていても表示されません。
剣道のデモの例と同じなので、なぜそれが起こっているのかわかりません:
ここにかみそりのコードがあります:
<div class="baseControlsLine rowLineHeight lineMap">
<div class="labelControlWith"> @Html.Label(@BackOffice.lblCountry + ":", htmlAttributes: new { @class = "baseLabel mapLabel" })</div>
<div class="baseControlSmall">
@(Html.Kendo().DropDownListFor(c => c.Customer.MapCountry)
.OptionLabel(BackOffice.txtSelectCountry)
.Events(e => e.Close("CustomerCreateEdit.CreateAddresMap").DataBound("CustomerCreateEdit.DataBound"))
.DataTextField("Text")
.DataValueField("Value").HtmlAttributes(new { @class = "baseTextbox" })
.DataSource(source => {
source.Read(read => {
read.Action(Constants.GET_COUNTRIES_SELECT_LIST, Constants.CUSTOMER_CONTROLLER);
});
}))
@Html.ValidationMessageFor(model => model.Customer.MapCountry)
</div>
</div>
<div class="baseControlsLine rowLineHeight lineMap">
<div class="labelControlWith"> @Html.Label(@BackOffice.lblProvince + ":", htmlAttributes: new { @class = "baseLabel mapLabel" })</div>
<div class="baseControlSmall">
@(Html.Kendo().DropDownListFor(c => c.Customer.MapProvince)
.Events(e => e.Close("CustomerCreateEdit.CreateAddresMap"))
.OptionLabel(BackOffice.txtSelectProvince)
.DataTextField("Text")
.DataValueField("Value").HtmlAttributes(new { @class = "baseTextbox" })
.CascadeFrom("Customer_MapCountry")
.DataSource(source => {
source.Read(read => {
read.Action(Constants.GET_PROVINCES_SELECT_LIST, Constants.CUSTOMER_CONTROLLER).Data("CustomerCreateEdit.GetCountryId");
}).ServerFiltering(true);
}))
@Html.ValidationMessageFor(model => model.Customer.MapProvince)
</div>
</div>
<div class="baseControlsLine rowLineHeight lineMap">
<div class="labelControlWith"> @Html.Label(@BackOffice.lblCity + ":", htmlAttributes: new { @class = "baseLabel mapLabel" })</div>
<div class="baseControlSmall">
@(Html.Kendo().DropDownListFor(c => c.Customer.MapCity)
.Events(e => e.Close("CustomerCreateEdit.CreateAddresMap"))
.OptionLabel(BackOffice.txtSelectCity)
.DataTextField("Text")
.DataValueField("Value").HtmlAttributes(new { @class = "baseTextbox" })
.CascadeFrom("Customer_MapProvince")
.DataSource(source => {
source.Read(read => {
read.Action(Constants.GET_CITIES_SELECT_LIST, Constants.CUSTOMER_CONTROLLER).Data("CustomerCreateEdit.GetProvinceId");
}).ServerFiltering(true);
}))
@Html.ValidationMessageFor(model => model.Customer.MapCity)
</div>
</div>
ここにjavascriptのコード:
GetCountryId: function () {
/// <signature>
/// <summary>Devuelve el id del country para la cascada.</summary>
/// </signature>
return {
id: $("#Customer_MapCountry").val()
};
},
GetProvinceId: function () {
/// <signature>
/// <summary>Devuelve el id de la provincia para la cascada.</summary>
/// </signature>
return {
id: $("#Customer_MapProvince").val()
};
},
そしてここにコントローラーがあります:
public JsonResult GetCitiesSelectList(int? id) {
if (!id.HasValue)
return Json(new SelectListItem() { Text = BackOffice.txtSelectCity }, JsonRequestBehavior.AllowGet);
List<CityLanguage> listCity = _applicationCity.GetAllWithLanguage(id.Value).ToList();
return Json(new SelectList(listCity, "IdCity", "Name"), JsonRequestBehavior.AllowGet);
}
public JsonResult GetProvincesSelectList(int? id) {
if (!id.HasValue)
return Json(new SelectListItem() { Text = BackOffice.txtSelectProvince }, JsonRequestBehavior.AllowGet);
List<ProvinceLanguage> listProvince = _applicationProvince.GetAllWithLanguage(id.Value).ToList();
return Json(new SelectList(listProvince, "IdProvince", "Name"), JsonRequestBehavior.AllowGet);
}
public JsonResult GetCountriesSelectList() {
List<CountryLanguage> listCountryLanguage = _applicationCountry.GetAllWithLanguage().ToList();
return Json(new SelectList(listCountryLanguage, "IdCountry", "Name"), JsonRequestBehavior.AllowGet);
}
編集:
jquery のバージョンに問題があり、JavaScript を次の順序で配置する必要がありました。
jquery. 剣道。jquery-ui.
エラーがJavaScriptの順序にある可能性はありますか?
また、剣道に付属していないバージョンのjqueryがあります。
このことのいくつかが、3 番目のドロップダウンリストの奇妙な動作を引き起こす可能性がありますか?