Kendo ui 动态刷新KendoUI下拉列表

Kendo ui 动态刷新KendoUI下拉列表,kendo-ui,kendo-combobox,Kendo Ui,Kendo Combobox,我有以下三个KendoUI下拉列表框 @(Html.Kendo().DropDownList() .HtmlAttributes(new { style = "width:auto;height:25px" }) .OptionLabel("Make (any)") .Name("Make") .DataTextField("Name") .DataValueField("MakeId") .DataSource(source =&g

我有以下三个KendoUI下拉列表框

    @(Html.Kendo().DropDownList()
    .HtmlAttributes(new { style = "width:auto;height:25px" })
    .OptionLabel("Make (any)") 
    .Name("Make") 
    .DataTextField("Name") 
    .DataValueField("MakeId")
    .DataSource(source =>
    {
           source.Read(read =>
           {
               read.Action("GetMakes", "Home"); 
           })
           .ServerFiltering(true); 
    })
    .SelectedIndex(0) 
    )

    @(Html.Kendo().DropDownList()
          .Name("Model")
          .HtmlAttributes(new { style = "width:auto;height:25px" })
          .OptionLabel("Model (any)")
          .DataTextField("Name")
          .DataValueField("ModelId")
          .DataSource(source => {
              source.Read(read =>
              {
                  read.Action("GetModels", "Home")
                      .Data("FilterModels");
              })
              .ServerFiltering(true);
          })
          .Enable(false)
          .AutoBind(false)
          .CascadeFrom("Make")

    )



    @(Html.Kendo().DropDownList()
          .Name("Fuel")
          .HtmlAttributes(new { style = "width:auto;height:25px" })
          .OptionLabel("Fuel type (any)")
          .DataTextField("Name")
          .DataValueField("FuelTypeId")
          .DataSource(source => {
              source.Read(read =>
              {
                  read.Action("GetFuelTypes", "Home")
                      .Data("FilterFuelTypes");
              })
              .ServerFiltering(true);
          })
          .Enable(false)
          .AutoBind(false)

    )
当用户从Make DropDownList中选择值时,使用CascadeFrom自动填充模型DropDownList

但是现在,我想在Make或Model列表更新时更新Fuel下拉列表,我发现您只能有一个CascadeFrom调用


关于如何实现这一点,有什么建议吗?

作为一种解决方法,我将使用“模型”下拉列表中的“选择”事件来启动功能,以刷新“燃料”下拉列表,并将Cascade FromMake添加到“燃料”下拉列表中

这将在选择Make后触发read操作,然后在选择模型后刷新Fuel下拉列表

@(Html.Kendo().DropDownList()
      .Name("Model")
      .HtmlAttributes(new { style = "width:auto;height:25px" })
      .OptionLabel("Model (any)")
      .DataTextField("Name")
      .DataValueField("ModelId")
      .DataSource(source => {
          source.Read(read =>
          {
              read.Action("GetModels", "Home")
                  .Data("FilterModels");
          })
          .ServerFiltering(true);
      })
      .Enable(false)
      .AutoBind(false)
      .CascadeFrom("Make")
      .Events(events => events.Select("select"))
)
选择连接到模型下拉列表中的事件以刷新燃料下拉列表:

<script>
  function select(e) {
    // get a referenence to the Kendo UI DropDownList
    var dropdownlist = $("#Fuel").data("kendoDropDownList");

    if (dropdownlist) {
      // re-render the items in drop-down list.
      dropdownlist.refresh();
    }
  };
</script>
这对我有用

$("#Fuel").data("kendoDropDownList").dataSource.read();
请在下面试试

var a=$Fuel.datakendoDropDownList;
a、 dataSource.read;燃料下降是否会根据型号选择触发级联?模型选择不是从制造中层叠而来的吗?看起来您的燃料下拉列表只需要从Make下拉列表中级联。我想允许用户选择Make并获取所有燃料类型,或者选择Make然后获取所有燃料类型。我在这篇文章中找到了我的问题的解决方案,谢谢。这正是我想弄明白的。如何传递所选的MakeId或ModelId,以便燃油列表仅匹配所选的燃油?在select方法中,您可以对ModelId执行如下操作。dataIteme.item.index.value。如果您从Make中级联燃油下降,则可以将数据流方法附加到数据源中的读取操作。这是一个很好的例子。根据您的经验,如果我想添加其他下拉列表,如发动机尺寸、颜色等,您会怎么做?所有这些都需要在其他下拉列表发生变化时进行更新。我喜欢您使用级联下拉列表的方法,并且可能会沿着该路径继续。引爆点将取决于有多少选项,以及大多数用户是否会使用这些选项。如果最有可能的用例是用户选择您提供的所有选项,那么您最好立即从服务器返回所有选项。如果你看看汽车交易网站,这就是我想要实现的技术。关于如何实现这一点有什么建议吗?应该是$Fuel.datakendoDropDownList.dataSource.read;属性数据源有一个大写字母