如何动态绑定kendo mvc ui下拉列表

Kar*_*idi 4 asp.net-mvc kendo-ui

我正在使用Kendo UI mvc在asp.net mvc上工作.我有两个剑道下拉列表.一个用于诊所列表,另一个用于选定诊所的患者列表.但是,临床和患者之间没有使用级联下拉列表的直接关系.因为我在dropdownlist更改事件中使用了ajax调用并获取了患者列表.这是我列表诊所的第一个下拉列表

 @(
  Html.Kendo().DropDownList()
  .Name("ddlClinics")
  .Events(e=>e.Change("ChangeClinic"))
  .BindTo(new SelectList((List<Account.Entities.Clinic>)ViewBag.lstClinic,
 "ClinicID", "ClinicName")))
Run Code Online (Sandbox Code Playgroud)

这是我的列表患者的第二个下拉列表

@(
 Html.Kendo().DropDownList()
.Name("ddlPatients")
.BindTo(new SelectList((List<Patient>)ViewBag.Patients, 
"PatId", "PatName"))))
Run Code Online (Sandbox Code Playgroud)

我想在第一个下拉列表更改时动态地将患者列表绑定到第二个下拉列表,

function ChangeClinic()
{
$.ajax({
url: '/Messages/GetPatient',
 type: 'Post',
 data: { email: '@User.Identity.Name' },
 cache: false,
 success: function (result) {
 var ddlPatients = $('#ddlPatients').data('kendoDropDownList');
 var main = [];
 $.each(result, function (k, v) {
 main.push({ "PatId": v.PatId, "PatName": v.PatName });
  });
  ddlPatients.dataTextField = "PatName";
  ddlPatients.dataValueField = "PatId";
  ddlPatients.dataSource.data(main);
  ddlPatients.reload();
 }
 });
}
Run Code Online (Sandbox Code Playgroud)

我能够将列表绑定到下拉列表,但所有项目都显示为"未定义".所以请指导我.

Els*_*mer 5

据我所知,诊所和患者之间存在关系,因此您应该能够使用包装中提供的CascadeFrom("DropDownList1").我们以类似的方式使用级联下拉列表来确定学区和学校之间的关系:

@(Html.Kendo().DropDownList()
            .Name("District")
            .HtmlAttributes(new { style = "width:300px;" })
            .BindTo(ViewBag.districts)
            .DataTextField("DistrictName")
            .DataValueField("DistrictID")
            .OptionLabel("Select District")
)
@(Html.Kendo().DropDownList()
            .Name("School")
            .HtmlAttributes(new { style = "width:300px;" })
            .CascadeFrom("District")
            .BindTo(ViewBag.schools)
            .DataTextField("SchoolName")
            .DataValueField("SchoolID")
            .OptionLabel("Select School")
)
Run Code Online (Sandbox Code Playgroud)