Kendo UI 级联下拉列表在绑定一次后不更新
KendoUI cascading drop-downs does not update after binding once
我正在使用 KendoUI 级联下拉菜单,它似乎大部分工作正常,但似乎有点问题。但是,我认为这是我的实现问题而不是该工具的问题,因为在他们的演示页面 here 上它似乎工作正常。此外,我尝试完全按照代码进行操作,以确保获得相同的行为。现在,我看到以下行为:
- 我 select 在父下拉菜单中选择一个选项,然后点击子下拉菜单,然后它会正确调用控制器操作
- 它会继续这样做只要子下拉列表的结果是空的
- 一旦它获得一些值来绑定子下拉列表,它就会停止对控制器进行任何调用,不管我在父下拉列表或子下拉列表中选择了什么.
我不确定为什么会这样。以下是我的代码片段:
控制器代码
[HttpGet]
public ActionResult FindAlignmentsByTeamId(int teamId)
{
var teams = Client.GetAlignmentsByTeamId(teamId);
return Json(teams, JsonRequestBehavior.AllowGet);
}
.cshtml代码
@* Perent Dropbox *@
<tr>
<td>EmployeeID</td>
<td><b>@Model.EmployeeId</b></td>
</tr>
<tr>
<td>Team</td>
<td>
@(Html.Kendo().DropDownList()
.Name("Team")
.DataTextField("TeamName")
.DataValueField("TeamId")
.DataSource(source => source.Read(read => read.Action("GetAllTeams", "Employee")))
)
</td>
</tr>
@* Child DropBox *@
@(Html.Kendo().DropDownList()
.Name("Alignment")
.DataTextField("AlignmentName")
.DataValueField("AlignmentId")
.DataSource(source => source.Read(read => read.Action("FindAlignmentsByTeamId", "Employee").Data("FilterAlignment"))
.ServerFiltering(true)
)
.CascadeFrom("teamId")
.AutoBind(false)
)
<script type="text/javascript">
function FilterAlignment() {
return {
teamId: $("#Team").val()
}
};
</script>
我不确定它第一次成功绑定一个值后会发生什么,所以它有理由相信现在它不必再检查任何 OnChange() 事件了?有什么想法吗?
你的 parent DropDownList
的 id
是 "Team",而不是 "teamId"。您需要更新 child DropDownList
以从正确的 id
:
级联
@(Html.Kendo().DropDownList()
.Name("Alignment")
.DataTextField("AlignmentName")
.DataValueField("AlignmentId"
.DataSource(source => source.Read(read => read.Action("FindAlignmentsByTeamId", "Employee").Data("FilterAlignment"))
.ServerFiltering(true)
)
.CascadeFrom("Team")
.AutoBind(false)
)
我正在使用 KendoUI 级联下拉菜单,它似乎大部分工作正常,但似乎有点问题。但是,我认为这是我的实现问题而不是该工具的问题,因为在他们的演示页面 here 上它似乎工作正常。此外,我尝试完全按照代码进行操作,以确保获得相同的行为。现在,我看到以下行为:
- 我 select 在父下拉菜单中选择一个选项,然后点击子下拉菜单,然后它会正确调用控制器操作
- 它会继续这样做只要子下拉列表的结果是空的
- 一旦它获得一些值来绑定子下拉列表,它就会停止对控制器进行任何调用,不管我在父下拉列表或子下拉列表中选择了什么.
我不确定为什么会这样。以下是我的代码片段:
控制器代码
[HttpGet]
public ActionResult FindAlignmentsByTeamId(int teamId)
{
var teams = Client.GetAlignmentsByTeamId(teamId);
return Json(teams, JsonRequestBehavior.AllowGet);
}
.cshtml代码
@* Perent Dropbox *@
<tr>
<td>EmployeeID</td>
<td><b>@Model.EmployeeId</b></td>
</tr>
<tr>
<td>Team</td>
<td>
@(Html.Kendo().DropDownList()
.Name("Team")
.DataTextField("TeamName")
.DataValueField("TeamId")
.DataSource(source => source.Read(read => read.Action("GetAllTeams", "Employee")))
)
</td>
</tr>
@* Child DropBox *@
@(Html.Kendo().DropDownList()
.Name("Alignment")
.DataTextField("AlignmentName")
.DataValueField("AlignmentId")
.DataSource(source => source.Read(read => read.Action("FindAlignmentsByTeamId", "Employee").Data("FilterAlignment"))
.ServerFiltering(true)
)
.CascadeFrom("teamId")
.AutoBind(false)
)
<script type="text/javascript">
function FilterAlignment() {
return {
teamId: $("#Team").val()
}
};
</script>
我不确定它第一次成功绑定一个值后会发生什么,所以它有理由相信现在它不必再检查任何 OnChange() 事件了?有什么想法吗?
你的 parent DropDownList
的 id
是 "Team",而不是 "teamId"。您需要更新 child DropDownList
以从正确的 id
:
@(Html.Kendo().DropDownList()
.Name("Alignment")
.DataTextField("AlignmentName")
.DataValueField("AlignmentId"
.DataSource(source => source.Read(read => read.Action("FindAlignmentsByTeamId", "Employee").Data("FilterAlignment"))
.ServerFiltering(true)
)
.CascadeFrom("Team")
.AutoBind(false)
)