层叠式剑道下拉列表在dhtmlx灯箱在MVC应用程序
本文关键字:dhtmlx MVC 应用程序 下拉列表 | 更新日期: 2023-09-27 17:50:34
我在DHTMLX灯箱中放置了两个级联剑道下拉列表。我不能用ajax调用过滤第二个列表,因为我的脚本不能从第一个列表中获得值。我注意到DHTMLX灯箱是基于iframe的,这是一个问题,但如何解决这个问题。
这是我的观点:
@(Html.Kendo().DropDownListFor(m => m.Checklist[i].IDSerwisu)
.OptionLabel(" ")
.DataTextField("Text")
.DataValueField("Value")
.Filter(FilterType.Contains)
.DataSource(source => {
source.Read(read => {
read.Action("GetServices", "Services");
})
.ServerFiltering(true);
})
)
<br />
Pracownik serwisu:
@(Html.Kendo().DropDownListFor(m =>
m.Checklist[i].IDPracownikaSerwisu)
.OptionLabel(" ")
.DataTextField("Text")
.DataValueField("Value")
.Filter(FilterType.Contains)
.DataSource(source => {
source.Read(read =>{
read.Action(
"GetContractorsEmployees",
"Services"
).Data("filterServices("+i+")");
})
.ServerFiltering(true);
})
.CascadeFrom("Checklist_"+i+"__IDSerwisu")
)
下面是我的级联列表脚本:
function filterServices(i) {
var ids = $("#Checklist_" + i + "__IDSerwisu").val();
return { ID: ids }
}
我的过滤服务器端函数总是接收null作为ID:
public JsonResult GetContractorsEmployees(string text,int? ID) {
ID = ID == null ? 0 : ID;
List<SpisOsobyKontaktoweModel> list = _repositorySpisSerwis.GetEmployees((int)ID);
if (!string.IsNullOrEmpty(text)) {
list = list.Where(item => (item.Imie + " " + item.Nazwisko).ToLower().Contains(text.ToLower())).ToList();
}
return Json(list.Select(e => new SelectListItem { Text = e.Imie + " " + e.Nazwisko, Value = e.ID_Osoby.ToString() }), JsonRequestBehavior.AllowGet);
}
我通过为第一个下拉列表值添加隐藏输入来解决这个问题,因为我需要避免使用jquery方法来获取下拉列表值。为了填充输入,我需要使用下拉列表select event。
function onSelect(e) {
var dataItem = this.dataItem(e.item);
var i = this._optionID.split("_")[1];
document.getElementById("ids" + i).value = dataItem.Value;
}
之后,我可以访问过滤器函数中的第一个值:
function filterServices(i) {
return { ID: document.getElementById("ids" + i).value }
}