Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MVC应用程序中dhtmlx lightbox中的级联剑道下拉列表_Javascript_C#_Asp.net_Kendo Ui_Dhtmlx - Fatal编程技术网

Javascript MVC应用程序中dhtmlx lightbox中的级联剑道下拉列表

Javascript MVC应用程序中dhtmlx lightbox中的级联剑道下拉列表,javascript,c#,asp.net,kendo-ui,dhtmlx,Javascript,C#,Asp.net,Kendo Ui,Dhtmlx,我有一个问题,两个级联剑道下拉列表放置在DHTMLX灯箱。我无法使用ajax调用过滤第二个列表,因为我的脚本无法从第一个列表中获取值。我注意到DHTMLX lightbox基于iframe,这是一个问题,但如何解决这个问题呢 以下是我的看法: @(Html.Kendo().DropDownListFor(m => m.Checklist[i].IDSerwisu) .OptionLabel(" ") .DataTextField("Text") .DataVa

我有一个问题,两个级联剑道下拉列表放置在DHTMLX灯箱。我无法使用ajax调用过滤第二个列表,因为我的脚本无法从第一个列表中获取值。我注意到DHTMLX lightbox基于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")
)
我的筛选服务器端函数始终接收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);

}
公共JsonResult GetContractorsEmployees(字符串文本,int?ID){ ID=ID==null?0:ID; List List=_repositorySpisSerwis.GetEmployees((int)ID); 如果(!string.IsNullOrEmpty(text)){ list=list.Where(item=>(item.Imie+“”+item.Nazwisko).ToLower().Contains(text.ToLower()).ToList(); } 返回Json(list.Select(e=>newselectListItem{Text=e.Imie+“”+e.nazzisko,Value=e.ID_Osoby.ToString()),JsonRequestBehavior.AllowGet); }
我通过为第一个dropdownlist值添加隐藏输入来解决这个问题,因为我需要避免使用jquery方法来获取dropdownlist值。要填充输入,我需要使用dropdownlist select事件

    function onSelect(e) {
    var dataItem = this.dataItem(e.item);
    var i = this._optionID.split("_")[1];
    document.getElementById("ids" + i).value = dataItem.Value;
}
之后,我可以访问filter函数中的第一个值:

function filterServices(i) {
    return { ID: document.getElementById("ids" + i).value }
}

验证是否正确定义了CascadeFrom值。请使用Html.IdFor确保:
function filterServices(i) {
    return { ID: document.getElementById("ids" + i).value }
}