【问题标题】:KendoUI cascading drop-downs does not update after binding onceKendo UI级联下拉列表在绑定一次后不更新
【发布时间】:2015-04-10 23:48:58
【问题描述】:

我正在使用 KendoUI 级联下拉菜单,它在大多数情况下似乎工作正常,但似乎有一点问题。但是,我认为这是我的实现而不是工具的问题,因为在他们的演示页面here 上它似乎工作正常。此外,我尝试完全按照代码进行操作,以确保我得到相同的行为。现在,我看到以下行为:

  • 我在父下拉列表中选择一个选项,然后单击子下拉列表,然后它会正确调用控制器操作
  • 它会继续这样做只要子下拉列表的结果为空
  • 一旦它获得了绑定子下拉列表的价值,它就会停止对控制器进行任何调用,不管我在父下拉列表或子下拉列表中选择了什么。

我不知道为什么会这样。以下是我的代码 sn-p:

控制器代码

[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() 事件了?有什么想法吗?

【问题讨论】:

  • 你的父下拉菜单在哪里?你也需要发布。
  • 但是,看代码,即使没有父下拉,我也能看出问题所在。您在javascript代码中使用的id与.CascadeFrom()中的id不同(一个是Team,另一个是teamId)。

标签: c# jquery asp.net-mvc kendo-ui kendo-dropdown


【解决方案1】:

您的父级 DropDownList 的 id 是“团队”,而不是“团队 ID”。您需要将您的孩子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)
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-23
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    相关资源
    最近更新 更多